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の設計の勉強になりそうなブログ

http://masuda220.jugem.jp/?eid=335