symfony2 - taka512/memo GitHub Wiki
インストール手順
1. php設定
時刻の設定
// /etc/php.ini
date.timezone = Asia/Tokyo
posixインストール
$ yum install php-process --enablerepo=remi --releasever=6
intlインストール
$ yum install icu
$ yum install libicu
$ yum install libicu-devel
$ pecl install intl
// /etc/php.ini
extension=intl.so
2. mysqlの設定
mysql> create database symfony20;
mysql> grant ALL on symfony20.* to 'symfony20'@'%';
mysql> SET PASSWORD FOR 'symfony20'@'%' = PASSWORD('symfony20');
mysql> FLUSH PRIVILEGES
3. Symfony2の設定
umaskの設定
// web/app.php
umask(0002);
// web/app_dev.php
umask(0002);
// app/console
umask(0002);
web/config.phpの削除
rm web/config.php
セッションディレクトリにアクセス権つける
chmod 777 /var/lib/php/session
parameters.iniに設定
// app/config/parameters.ini
database_name = symfony20
database_user = symfony20
database_password = symfony20
locale = ja
コマンド メモ
日常使うコマンドのメモ
1. バンドル作成
php app/console generate:bundle --namespace=Taka512/UserBundle --format=yml
2. キャッシュクリア
php app/console cache:clear --env=prod
3. エンティティ作成
php app/console doctrine:generate:entities Taka512GooglePlaceBundle
4. Mongo DB ドキュメント作成
php app/console doctrine:mongodb:generate:documents PexarSpotBundle
下記エラーがでるがもう一度実行すると成功する。
[ErrorException]
Warning: class_parents(): Class Pexar\SpotBundle\Document\TestLocation does not exist and coul
d not be loaded in /mnt/web/httpd_pex/fan-nama.jp/vendor/doctrine-mongodb-odm/lib/Doctrine/ODM
/MongoDB/Mapping/ClassMetadataFactory.php line 336
5. テーブル作成
DB内容との差分があるか確認
php app/console doctrine:schema:update
差分のSQLを確認
php app/console doctrine:schema:update --dump-sql
反映
php app/console doctrine:schema:update --force
6. mongodbにindex作成
php app/console doctrine:mongodb:schema:create --index
7. データロード
全部(データ削除も動作)
php app/console doctrine:fixtures:load --env=test
一部(追加)
php app/console doctrine:fixtures:load --fixtures=src/Pexar/MissionBundle/DataFixtures/ORM/SystemTest --append
8. テーブル定義から
php app/console doctrine:mapping:convert yml ./src/Pexar/PointBundle/Resources/config/doctrine/metadata/orm --from-database --force
9. テスト
phpunit -c app/
tips
1. parameter.iniの値を取得
parameters:
email.from_address: [email protected]
public function helloAction($name)
{
$fromAddress = $this->container->getParameter('email.from_address');
2. file操作はfinder
http://symfony.com/doc/current/cookbook/tools/finder.html
3. cookieをセットゲット
$this->get('request')->cookies->get('fanrk');
$response->headers->setCookie(new Cookie('fanrk', $token, 0, '/', null, true, true));
Extensionでのdev.prod判別
class PexarExchangeExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
var_dump($container->getParameterBag()->get('kernel.environment'))
そのうち見る
メンターズさんのソース
https://github.com/phpmentors-jp/phpmentors-training-example-symfony
DDD設計
DDDの設計の勉強になりそうなブログ