2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

初期構築からSymfony4を動かすまでのメモ

Last updated at Posted at 2019-03-26

はじめに

個人的にメモしてたやつだけど、もし使う人が居たらってことで構築メモを落としておく。
だけどいまはLaravelが凄いから、こんなの出してもってのもある(汗)

導入と初期設定

導入環境はWin10のWSL。WSLじゃなくてままのUbuntuでも。
Apache2とphpはXAMPPじゃなくて、個別にモジュール追加でインストール。

Apache2 and PHP install and Composer Setup

サーバー環境はUbuntuだとaptで追加していく。また導入後にphp.iniも忘れずに設定しておく。

sudo apt install curl zip git vim apache2 php8.1 mysql-server php8.1-cli php8.1-curl php8.1-intl php8.1-mbstring php8.1-xml php8.1-mysql libapache2-mod-php8.1

composerの導入

phpのパッケージ管理ツールです。入れておきましょう。

https://getcomposer.org/download/


composer高速化

2021/11/04追記
Composerがv2になってからデフォルトで高速化されるようになりました!
なので下記の対応は不要になりました。

composer v1Composerのパッケージダウンロードを並列化するプラグインPrestissimoを導入する。依存関係のパッケージが並列にダウンロードされるので、SymfonyやLaravelなどパッケージ数の多いフレームワークをComposerで利用する時には相当な時間短縮になる。 `composer global require hirak/prestissimo`

Apache2 Setup

Apacheの設定と導入したPHPのモジュール有効化からRootディレクトリの設定。そして有効化の再起動をしていく。

apache2ctl -M
sudo /usr/sbin/a2enmod rewrite
sudo vim /etc/apache2/apache2.conf
sudo vim /etc/apache2/sites-available/000-default.conf
sudo vim /etc/apache2/sites-enabled/000-default.conf
sudo service apache2 restart

Git Setup

一応でコンソールにて済ませておく。上から

  1. Githubの登録ID
  2. 同じく今度はメールアドレス
  3. カラーパターンの設定
  4. git checkoutの短縮
  5. git commitの短縮
  6. git statusの短縮
  7. git branchの短縮
  8. 勝手に改行コードを変えない為の設定
git config --global user.name "GithubID"
git config --global user.email "GithubMail"
git config --global color.ui auto
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.hist 'log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short'

インストール(v4)

昔はsymfony newとかで入れてた気がしたけど、今はcomposerでらくちん導入。

composer create-project symfony/skeleton project-name

Symphonyで使える便利なサーバの追加

昔はデフォで入ってたはずだけどv4から消えて、軽くなった感じ。確かに中身を見るとだいぶすっきりした印象がある。そしてインストールはいつものcomposer require serverでらくちん。

※サーバー起動(bin/console server:run)したが、この時点ではデフォルトルートがないよと怒られた。何もないから当然。

作成を便利に作成するやつ

CakePHPで言うならbakeがsymfonyにもあるらしい。あるのとないのじゃかなり変わってくるから、かなり助かる(触ってたのはv2だから...)。

composer require maker

コントローラー作成の助け

正式名称はannotationの省略形。

SensioFrameworkExtraBundleをインストールします。SymfonyMakerBundleは、コントローラーを作成するとき、ルーティング定義にアノテーションを使います。アノテーションによるルーティングの制御は、SensioFrameworkExtraBundleが提供する機能です。

うん、よくわからないけど便利にしてくれるみたい。

composer require annot

デバッグツール

お馴染みの大好きデバッグツールで、これがないと開発がつらい。そしてテストもできるイケメン。

composer require debug-pack

いつも使ってるテンプレートエンジン追加(v2)

色々使って、結局落ち着くTwig。Laravel bladeもかなり良いと聞くけど(Laravelの使用率と検索率を見ながら)、なんとなく自分には合わなかった。地味にSmartyも好きだったりする。

composer require twig


作って動かす

コントローラーの作成とビューの作成。

コントローラー作成

コマンドでらくちん。

./bin/console make:controller DefaultController

動かしてみる

前はココで色々と変更が必要だったけどmakeする前にtwigが入ってると自動で認識して、設定してくれるようになったみたい。便利。

./bin/console server:run


メモツールつくる

動きはなんとなく分かったから、メモツールを作ってみる。

とりあえずDemoを拡張して、更に感覚を

自分が入れたのはsymfony/skeletonで、名前の通り最低限のもの(そりゃ軽い)。なのでsymfony/symfony-demoでFull-Verを使って弄る。

composer create-project symfony/skeleton-demo symfony-demo

一応起動確認

php bin/console server:runでlocalhost:8000へ。すると日本語化されたDemoが。コレはありがたい...。

早速弄る

日本語になっているのは、どうやら言語ファイルがあるらしく、そこからロードして出してる様子。それにしてもSymfonyProfilerが有能過ぎて惚れる...。

Controller

Controllerはココに入ってた。

./src/controller

Lang

翻訳するには下記ファイルに書き足すことで翻訳追加が出来る。これによりグローバル化がかなり簡単であり、更にはSymfonyProfilerで抜けている翻訳があれば警告でお知らせをしてくれる親切機能。

./translations/messages.ja.xlf

DataBase

どうやらDemoはSQLiteを使ってデータを保存している。だけどそのやり取りをしているであろうModelが何処なのか、この時点では見当たらない。

とりあえず設定箇所はsymfonyのROOTに.envがあるのでこれで指定する。

.env.dist
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/blog.sqlite

設定後にphp bin/console doctrine:database:createで.env.distの内容を読み取って作成してくれる。この辺はLaravelとほぼ同じ。

Databaseを作る

php bin/console make:entity (DBNAME)にてsrc/Entity/(DBNAME).phpが出来るので、これを弄る。

でModelはどこよ

どうやらControllerでもDBの操作が可能みたいだけどskeleton-demoはsrc/Repository/にてDBの操作をしていた。

ん、と思ってControllerに戻るとuse App\Repository\PostRepository;の記述が、コレで呼んでたのか...。それを踏まえて読むとpublic function index(int $page, string $_format, PostRepository $posts): Responseと確かにPostRepositoryを呼んでる記述。なにこれ初見でこんなん気付けないって...。

じゃあViewは?

Controllerにて普通に呼び出されてた。ちなみに下記の$_formatはURLをそのままファイル名で呼んでいるので、そのための記述。

return $this->render('blog/index.'.$_format.'.twig', ['posts' => $latestPosts]);


まとめ

Slim3やCodeigniter3をメインとして使っていたが、慣れれば結構Symfonyも扱いやすいのではと、調べてみるとそう思った。あと割と色々と勉強で様々のフレームワークを触れてたので、意外とどうにかなった(CakePHP3 FuelPHP Laravel Lumen(Laravelのマイクロ版))。暇があればゴリッと何か作ってもいいかもと思いました(・ω・)
ただ、やはりSymfonyはYahooが採用しただけあって結構お硬いフレームワークなので学習コストが高そうとも思いました...。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?