åå空éã¨ã¯ã©ã¹å
11æ12æ¥ã«パーフェクトPHPãçºå£²ãã¾ãããè³¼å ¥ããã ããæ¹ãã³ã¡ã³ãããã ããæ¹ããããã¨ããããã¾ãï¼
-
-
- -
-
ãã¦æ¬é¡ã§ããPHP 5.3ããåå空éã使ããããã«ãªãã¾ãããåã¯ããæè¿Symfony2ã§ç¤¾å åãã®ã¢ããªãéçºããããSymfony2ã®ãã³ãã«ãããã¤ãä½ã£ãããã¦ãã£ããåå空éã«æ £ãã¦ãã¾ããã
åå空éã使ãå§ãã¦æããã®ããã¯ã©ã¹åãã¤ããéã®æè¦ãããã¾ã§ã¨ã¯å°ãéãããã«æãã¾ããããã¾ã§ãã¨ããã®ã¯ä¸»ã«PEARå½¢å¼ã®ã¯ã©ã¹åãæãã¦ãã¾ããDoctrineãä¾ã«ã¨ã£ã¦è§£èª¬ãã¾ãã
åå空éã¨ã¯ã©ã¹å
Doctrine 1ã§ã¯ã次ã®ãããªã¯ã©ã¹ãå®ç¾©ããã¦ãã¾ãã
ããããåç´ã«åå空éã使ã£ãå½¢å¼ã«ç½®ãæãã¦ã¿ã¾ãã
ããã§åé¡ã¨ãªãã®ããããããã¤ã³ãã¼ãããæã§ãã
<?php use Doctrine\Expression\Mysql; use Doctrine\DataDict\Mysql; use Doctrine\Connection\Mysql;
ã¿ã¦ã®éããã¯ã©ã¹åã被ã£ã¦ãã¾ãã¾ããããã§ã¯æ¬æ«è»¢åã§ãã
åå空éãç¨ããå ´åããããã3ã¤ã®ã¯ã©ã¹ã¯ããã¾ã§ããMysqlãã¨ããã¯ã©ã¹åã«ãªãã¾ããããã¯ããããã¯ã©ã¹åã¨ãã¦ä¸é©åã§ã¯ãªãã§ãããããããããããMysqLExpressionããMysqlDataDictããMysqlConnectionãã¨ããã¯ã©ã¹åã§ããã°ãåæã«ã¤ã³ãã¼ããã¦ãä½ãåé¡ã¯ããã¾ããããã¯ã©ã¹åã¨ãã¦ã妥å½ã§ãã
ããã¾ã§ã¯åå空éã«è©²å½ããé¨åãå«ãã¦ã¯ã©ã¹åã¨ãã¦ãã¾ããããåå空éãå®è£ ããããã¨ã«ãã£ã¦ãåå空éã¨ãã¦ã®æå³ããæããªããªãã¾ãããåå空éãåãé¤ããã¨ãã¦ããã¯ã©ã¹åããã¯ã©ã¹ã®å½¹å²ããããããã«ååãã¤ããå¿ è¦ãããã¾ãã
ããã«ã¤ãã¦ã¯ãããã¾ã§ã®æè¦ã ã¨ãExpressionMysqlãããExpressionPgsqlãã®ããã«å
±éèªå¥ããã¬ãã£ãã¯ã¹ãã¤ããã¡ããããã¾ãããããMysqlExpressionããPgsqlExpressionãã®ããã«ãµãã£ãã¯ã¹ã«ããæ¹ãè±èªçã«ãã£ããããã¨æãã¾ãã
æ½è±¡ã¯ã©ã¹ã®ãã¸ã·ã§ã³
Doctrine_Expression_Mysqlã¯ã©ã¹ã¯Doctrine_Expressionã¯ã©ã¹ãç¶æ¿ãã¦ãã¾ããDoctrine_Expressionããã®ã¾ã¾åå空éã使ã£ãå½¢å¼ã«ç½®ãæããã¨ãDoctrine\Expressionã¨ãªãã¾ãããããªã£ãå ´åãExpressionã¯ããã¾ã§Doctrineåå空éã®å®ç¾©ãããç¶æ ã§ããããã¯æè¦çãªåé¡ããããã¾ããããåã¯ããã«ã¯éåæãããã¾ãã
ãã£ã¬ã¯ããªçã«ã¯æ¬¡ã®ããã«ãªãã¾ãã
Doctrine/ - Expression.php - Expression/ - MysqlExpression.php
ããã«ã¤ãã¦ãããã¾ã§Doctrine\Expressionã¨ããåå空éã®ä¸ã§å®çµãã¦ããã¹ãã ã¨èãã¾ãã
Doctrine/ - Expression/ - Expression.php - MysqlExpression.php
ãããªãã¨ä¿®é£¾ã¯ã©ã¹åã¯ãDoctrine\Expression\Expressionãã¨ãªãã¾ãã
åä¸ã®åå空éã«ããã°ãã¯ã©ã¹å®ç¾©ã®éã親ã¯ã©ã¹ãã¤ã³ãã¼ãããå¿ è¦ããªãã®ã§æ¥½ã§ãããèªç¶ã«æãã¾ãã
åä¸åå空éã«ããå ´å:
<?php namespace Doctrine\Expression; class MysqlExpression extends Expression {}
åä¸åå空éã«ããªãå ´å:
<?php namespace Doctrine\Expression; use Doctrine\Expression; class MysqlExpression extends Expression {}
åä¸åå空éã§ãªãå ´åã¯ãããããã¯ã©ã¹åã¨åå空éã被ã£ã¦ãã¾ãã¾ããããåä½ã¯ãã¾ããã©ãã
ã¾ã¨ã
- åå空éã修飾ãã¦ããªãã¯ã©ã¹åã ããè¦ã¦ããã¯ã©ã¹ã®å½¹å²ãããããããªååãã¤ãã
- æ½è±¡ã¯ã©ã¹ã¨å ·è±¡ã¯ã©ã¹ã¯åãåå空éã«é ç½®ãã
æ°ãã¤ãã¦ããäºç´°ãªãã¨
åå空éã¯åæ°å½¢
ãã£ã¬ã¯ããªãåå空éã¨ãã¦æ±ãå ´åããã£ã¬ã¯ããªã®ä¸ã«è¤æ°ãã¡ã¤ã«ã管çãã¦ããã¨ããè¦ç¹ã§è¦ãã¨ç¢ºãã«è¤æ°å½¢ã«ããããªãã¾ãããããã¾ã§åå空éã§ãæçµçã«ã¯åä¸ã®ä½ããç¹å®ããããã®ãã®ã ã¨èãã¦ãã¾ãã
ä¾ãã°ãLoaders\YamlLoaderãã¨ãLoader\YamlLoaderãããã£ãã¨ãã¾ããããYamlLoaderã¯Yamlãã¡ã¤ã«ããã¼ãããã¯ã©ã¹ã§ããLoadersãã£ã¬ã¯ããªã®ä¸ã«YamlLoaderã¯ã©ã¹ãã¡ã¤ã«ããã£ãã¨ãã¦ãLoadersãã£ã¬ã¯ããªã®ä¸ã«è¤æ°ã®Loaderã¯ã©ã¹ãé
ç½®ããããã¨ãèããã¨ããã£ã¬ã¯ããªåã¨ãã¦ã¯é©åã«æãã¾ãããããéã«ãYamlLoaderã¯ã©ã¹å´ã«ç«ã£ã¦èããã¨ãYamlLoaderã¯ã©ã¹èªä½ã¯åä¸ã®åå¨ã§ãè¤æ°ã®ä½ãã表ãããã®ã§ã¯ããã¾ãããã¯ã©ã¹ã®ç«å ´ããèããã¨ãåå空éã¯åæ°å½¢ã®æ¹ããã£ããããã¨æãã¾ãã
åºæ¬çã«ã¯ã¤ã³ãã¼ããã¦ãã使ã
åºæ¬çã«ã¯ã¤ã³ãã¼ããã¦ã¾ãã
<?php $request = new \Symfony\HttpFoundation\Request();
ã§ã¯ãªãã
<?php use Symfony\HttpFoundation\Request; $request = new Request();
ä¸è¨ã®ããã«ã¤ã³ãã¼ãããããã¨ãããã¨ã§ããããã¯è¦éããè¯ããããã¨ã¨ãé¢é£ããä»ã®åå空éã®ã¯ã©ã¹ãããããããããããã«è¡ã£ã¦ãã¾ãã
RuntimeExceptionãDateTimeãArrayAccessãªã©ãPHPãæä¾ãã¦ããã©ãã§ã使ãããããªã¯ã©ã¹ã«ã¤ãã¦ã¯ç¹ã«ã¤ã³ãã¼ãã¯ãã¾ãããuseãæ¸ãã¦ã使ã£ã¦ãããã¨ãæç¤ºããã¡ãªãããç¹ã«ãªãã¨æãã®ãçç±ã§ãããããã¯ãã¡ãã¡ã§åçªã«ä½¿ããããªãããã§ããæ¥ä»ãæä½ãããããDateTimeã¯ã©ã¹ã使ããããªãã¦è²ããªç®æã§èãã¾ããããããã¯ã¹ã©ãã·ã¥1åã®ããã«ããããä¸ã¾ã§æ»ã£ã¦useãæ¸ãã®ã¯é¢åãã¨ããã®ãæ¬é³ã§ãã
ã¤ã³ãã¼ããããã¯ã©ã¹ãè¤æ°ããã¨ãã¯ãããããuseãæ¸ã
useã¯ã«ã³ãã§ã¤ãªãã¦è¤æ°æå®ãå¯è½ã§ãã
<?php use Symfony\Component\HttpKernel\Bundle\Bundle, Symfony\Component\DependencyInjection\ContainerInterface;
ã§ããããã¦ã1ã¤1ã¤useãã¤ãã¦æ¸ãããã«ãã¦ãã¾ãã
<?php use Symfony\Component\HttpKernel\Bundle\Bundle; use Symfony\Component\DependencyInjection\ContainerInterface;
å
é ã®è¦ç´ ã¯useãã¤ãã¦ãæ«å°¾ã®è¦ç´ ã¯ã«ã³ãã§ã¯ãªãã»ãã³ãã³ãã¤ããã¨ãã£ãå
¨ãåãå½¹å²ãæã¤ãã®ã®ä¸¦ã³ã®ä¸ã«ä¾å¤ãå
¥ããã¨ã好ãã§ã¯ãªãããã§ãã追å ãåé¤ã®éã®ãã¹ãæ¸ããæå³ãããã¾ããã¯ã©ã¹ã®ããããã£å®ç¾©ãªãããåæ§ã«ãã¦ãã¾ãã
ãã®ä»ãã¯ããã¯çãª
useãé¢åãããã¨ããç¹ã«é¢ãã¦è¨ãã¨ãä¾ãã°Symfony2ã§ã¢ããªã±ã¼ã·ã§ã³ãä½ãå ´åãåã³ã³ããã¼ã©ã¼ã¯Symfony\FrameworkBundle\Controller\Controllerã¯ã©ã¹ãç¶æ¿ãã¦ä½ãã®ãåºæ¬ã§ãããã æ¯åuseããã®ã¯é¢åãªã®ã§ãåBundleã®Controlleråå空éã«ç©ºã®Controllerã¯ã©ã¹ãä½ãããã«ãã¦ãã¾ãã
<?php namespace Application\AppBundle\Controller; use Symfony\FrameworkBundle\Controller\Controller as BaseController; abstract class Controller extends BaseController { }
<?php namespace Application\AppBundle\Controller; // åå解決ã®ã«ã¼ã«ã«ã®ã£ã¨ãApplication\AppBundle\Controller\Controllerãç¶æ¿ class AccountController extends Controller { }
ããããã¨ã³ã³ããã¼ã©ãä½ããã³ã«useããå¿
è¦ã¯ãªãã§ãããå
±éå¦çã®è¿½å ãå½ç¶æ¥½ã«ãªãã¾ããããåé¡ãªããã°ãã¬ã¼ã ã¯ã¼ã¯ã¨ã®éã«1ææãã§ããã¨ä½ãã¨æ¥½ã§ãã
çµããã«
ããã¾ã§ã¯åå空éé¨åããã¹ã¦å«ãã¦ã¯ã©ã¹åã¨ãã¦æ±ã£ã¦ããã®ã§ãããããã¦ã³çã«ã¯ã©ã¹åãã¤ãã¦ããã°ãããããã¹ãã¯ã©ã¹åã«ãªã£ã¦ãã¾ãããããããåå空éã®æ¡ç¨ã«ããããã®ã¾ã¾ã®ã¤ãæ¹ã§ã¯ãã¯ã©ã¹åãçããªãããã¦æ¬æ¥æã£ã¦ããæå³ããããããªããªãå¯è½æ§ãããã¾ãã
åãã³ã¼ããæ¸ãã¨ããã¨ããããåå空éã¯æ°ã«ããã1ã¤ã®ãã¡ã¤ã«ã«ã¬ã¼ã£ã¨ã¯ã©ã¹ãå®ç¾©ãã¦ãããããç¨åº¦ã¾ã¨ã¾ã£ãã¨ããã§åå¥ã«ã¯ã©ã¹ãã¡ã¤ã«ãé ç½®ãããã¨ãã£ãããæ¹ãã¨ããã¨ãå¤ãã§ããããæ¹ã¯äººããããã§ãããã¾ãã¯ã¯ã©ã¹åãæèãã¦ããã¨ããé©åãªåå空éãè¨ããããã«èãã¦ããã¨ããã¨æãã¾ãã