ç§ã¯è±èªã®åéã®å°é家ã§ã¯ãªãã100ïŒ æ£ãã翻蚳ã®ãµããããªãã§ããã«äºçŽããããšæããŸãããæè¿ãç§ã¯èªç±ã«è©±ããèªã¿ãæžãããã®ã§ãã§ããéããããå匷ããããšãå§ããŸããã
ãããã£ãŠã翻蚳ã«äžæ£ç¢ºãªç¹ãèŠã€ããå Žåãäœãééã£ã翻蚳ã解éãããå Žåã¯ãç§ã«é£çµ¡ããŠãã ãããééããèšæ£ããéåžžã«æè¬ããŸãã
ãããã£ãŠãå®éã«ã¯ç¿»èš³ïŒ
ã¯ããã«
ãªãŒãããŒãã¯ãPHPã³ãŒãå ã®ãã¡ã€ã«ãšã¯ã©ã¹éã®äŸåé¢ä¿ãæåã§è¿œè·¡ããå¿ èŠæ§ãæé€ããã¡ã«ããºã ã§ãã
PHPããã¥ã¢ã«ã®å¯Ÿå¿ããã»ã¯ã·ã§ã³ã§ã¯ ãèµ·åã¡ã«ããºã ã®æ¥ç¶æ¹æ³ã«ã€ããŠèª¬æããŠããŸãã ãã®ã¡ã«ããºã ãæ¥ç¶ããåŸãæªå®çŸ©ã®ã¯ã©ã¹ãŸãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããšãautoloadé¢æ°ãèªåçã«åŒã³åºãããŸãã
ã¹ã¿ãŒãã¢ããé¢æ°ã䜿çšãããšã䜿çšããŠããã¯ã©ã¹ããããžã§ã¯ãå ã®ã©ã®ãã¡ã€ã«ã§ããããå¿é ããå¿ èŠããããŸããã åªãããªãŒãããŒããŒãããã°ãå¿ èŠãªã¯ã©ã¹ãèšè¿°ãããŠãããã¡ã€ã«ã®å Žæãæ°ã«ããå¿ èŠã¯ãããŸããã ã³ãŒãå ã®ã¯ã©ã¹ã«ã¢ã¯ã»ã¹ããã ãã§ããªãŒãããŒããŒãåŠçããŸã
å¿ èŠãªã¯ã©ã¹ã®çºè¡šã®æ€çŽ¢æ©èœã
ããã«ãèªåèªã¿èŸŒã¿ã䜿çšãããšãããã«å€ãã®æéãå¿ èŠã«ãªããããæéãå€§å¹ ã«ç¯çŽã§ããŸãã
ãã¡ã€ã«ããã§ã«æ¥ç¶ãããŠãããã©ãããæ°ã«ããå¿ èŠã¯ãããŸããã ããªãã«
ãã¡ã€ã«ã以åã«æ¥ç¶ããããã©ãããããã³ãã¡ã€ã«ããŸã æ¥ç¶ãããŠããããšãå€æãããã©ããã確èªããå¿ èŠã¯ãããŸããã
ããã«ããã require_onceïŒïŒã䜿çšããå¿ èŠããªããªããŸãã ãã¡ã€ã«ãæ¥ç¶ããŸãã
Zend Frameworkã¯autoloadã¯ã©ã¹ã®äœ¿çšãæšå¥šããããŒãããããã®ããã€ãã®æ段ãæäŸããŸã
ãµãŒãããŒãã£ã¯ã©ã¹ãããã³ã¢ããªã±ãŒã·ã§ã³å ã§ã®ã¯ã©ã¹ã®ããŒãã ãã®ã¬ã€ãã§ã¯ãZend Frameworkã䜿çšããŠã¯ã©ã¹ã®èªåããŒãæ©èœã䜿çšããæ¹æ³ã説æãããããã®æ©èœãæãå¹æçã«äœ¿çšããã®ã«åœ¹ç«ã¡ãŸãã
ç®æšãšãã¶ã€ã³
ã¯ã©ã¹ã®åœåèŠå
ãZned Frameworkã§ãªãŒãããŒãã䜿çšããæ¹æ³ãç解ããã«ã¯ããŸãç解ããå¿ èŠããããŸã
ãã®ãã¬ãŒã ã¯ãŒã¯ã§ã®ã¯ã©ã¹åãšãã¡ã€ã«åã®é¢ä¿ã
Zend Frameworkã¯ãã¯ã©ã¹åãšãã¡ã€ã«åã®æ¯çã1察1ã§ããPEARã§æ¡çšãããŠããã¯ã©ã¹åã䜿çšããŸãã ç°¡åã«èšãã°ã ZFã§ã¯ãã¯ã©ã¹åã®èšå·ã_ããã/ãã«çœ®ãæããããæåŸã«ãµãã£ãã¯ã¹ã.phpããã¯ã©ã¹åã«è¿œå ãããŸãã ããšãã°ãã¯ã©ã¹åãFoo_Bar_Bazãã¯ãå®éã®ãã¡ã€ã«ãFoo / Bar / Baz.phpããæããŸãã ããã«ãPHPã®include_pathå€æ°ã§ãã¡ã€ã«ãæ€çŽ¢ããããšã«ãªã£ãŠããŸãã ããã«ããããã®æ§æãªãã·ã§ã³ã§æå®ããããã£ã¬ã¯ããªã§ãã¡ã€ã«ãæ€çŽ¢ããããšã«ããããã¡ã€ã«ãæ¥ç¶ã§ããŸãã
ããã«ããã¹ãŠã®ãããžã§ã¯ãã«ãã¬ãã£ãã¯ã¹ã䜿çšããããšããå§ãããŸãã ããšãã°ããã¹ãŠã®åå
Zend Frameworkã®ã¯ã©ã¹ã¯ãã¬ãã£ãã¯ã¹"Zend_"ã§å§ãŸããŸãã ããã«ãããååã®ç«¶åãåé¿ãããŸã
ããŸããŸãªã©ã€ãã©ãªã䜿çšããå Žåã Zend Frameworkå ã§ã¯ããããã®ãã¬ãã£ãã¯ã¹ãã¹ããŒã¹ãšåŒã³ãŸã
ååïŒãåå空éãïŒã PHPåå空éãšæ··åããªãã§ãã ããã
ãã®ãããªã«ãŒã«ãšèŠåã¯ãZend Frameworkã§äžè¬çã«äœ¿çšãããŠããã
ãããã®ã«ãŒã«ãé å®ããŠãã ããã
èŠåãšãªãŒãããŒããŒã®èšèš
Zend Frameworkã¯ã Zend_Loader_Autoloaderã¯ã©ã¹ã䜿çšããŠèªåããŒããå®è£ ããŸã
次ã®ã«ãŒã«ãé©çšããã次ã®å¥çŽããããŸãã
1.äžèŽããåå空éã確èªããŸãã ã¯ã©ã¹ã®ãã¬ãã£ãã¯ã¹ãç»é²ãããŠããªãå Žå
ã¢ããªã±ãŒã·ã§ã³å ã§ã¯ãåå空éã¯FALSEãè¿ããŸãã ãã®ãããªçµç¹ã®å©ããåããŠã次ã®ããšãã§ããŸã
èªåããŒããä»ã®èªåããŒããŒã«è»¢éããŸãã
2.ãã©ãŒã«ããã¯ã¢ãŒããæå¹ã«ã§ããŸãã ãã®ã¢ãŒããã¢ã¯ãã£ãã«ãªããšãããŒãããŒããŒã¯
ããŒããŒã«åºæã®ãåå空éãã«é¢ä¿ãªãã¯ã©ã¹ãæ¢ããŸãã
3.ããŒãããŒããŒãå¿ èŠãªã¯ã©ã¹ãèŠã€ããããªãå Žåã ãšã©ãŒåºåãç¡å¹ã«ããããšãã§ããŸã ã
ããã©ã«ãã§ã¯ããã®ãªãã·ã§ã³ã¯ç¡å¹ã«ãªã£ãŠããŸãã ãã ããå¿ èŠã«å¿ããŠãªã³ã«ããããšãã§ããŸãã
4.ã³ãŒã«ããã¯é¢æ°ãäœæã§ããŸããããšãã°ããŠãŒã¶ãŒãæãã§ããªãå Žå
çµã¿èŸŒã¿ã¡ãœããZend_Loader :: loadClassïŒïŒã䜿çšããŸãã ããããåæã«åœŒã¯äœ¿çšããã
Zend_Loader_AutoloaderãªãŒãããŒããŒã®ã¡ã«ããºã ã
5.ç°ãªãããŒãããŒããŒã®ãã§ãŒã³ãæ§ç¯ã§ããŸãã ãã®æ¹æ³ã§æ¥ç¶ã§ããŸã
ããšãã°ãåœåèŠåã«è©²åœããªãã¯ã©ã¹ãããŒãããããã®æ©èœ
Zend Frameworkã®ã¯ã©ã¹ã æšæºã®ååŸã«ãªãŒãããŒããŒã䜿çšã§ããŸã
Zend FrameworkããŒãããŒããŒã
ããŒãããŒããŒã®åºæ¬çãªäœ¿çšã
åºæ¬ãç解ããã®ã§ã次ã«ç·Žç¿ã«é²ãã§äœ¿çšæ¹æ³ãèŠãŠã¿ãŸããã
ã¯ã©ã¹Zend_Loader_Autoloaderã
ãã®ã¯ã©ã¹ã®ãã¡ã€ã«ãæ¥ç¶ããæãç°¡åãªæ¹æ³ã ãããŠãããŒãããŒãã€ã³ã¹ã¿ã³ã¹ãååŸããŸãã ãŸãã泚æããå¿ èŠããããŸã
Zend FrameworkããŒãããŒããŒãã·ã³ã°ã«ãã³ãã¿ãŒã³ã«åºã¥ããŠæ§ç¯ãããŠããããšã ãããã£ãŠããªããžã§ã¯ããååŸããã«ã¯
getInstanceïŒïŒã¡ãœããã䜿çšãããŸãã
- require_once 'Zend / Loader / Autoloader.php' ;
- Zend_Loader_Autoloader :: getInstance ïŒ ïŒ ;
ããã©ã«ãã§ã¯ãããŒãããŒããŒã¯ãã¬ãã£ãã¯ã¹ã§å§ãŸããã¹ãŠã®ã¯ã©ã¹ãèªåçã«æ¥ç¶ããŸãã
"Zend_"ãŸãã¯"ZendX_" ã include_pathå€æ°ã§æå®ããããã¹ã
åªãããã¬ãã£ãã¯ã¹ãæã€ã¯ã©ã¹ãããŒãããŒããŒã«åŒ·å¶çã«æ€çŽ¢ãããå Žåã®å¯ŸåŠæ¹æ³
Zend_ããã registerNamespaceïŒïŒã¡ãœããã䜿çšããå¿ èŠããããŸãã ãã®ã¡ãœããã¯ããã©ã¡ãŒã¿ãŒãšããŠãã¬ãã£ãã¯ã¹ãŸãã¯ãã¬ãã£ãã¯ã¹ã®é åãåãå ¥ããŸãã ãã®æ¹æ³ã䜿çšããŠãã¬ãã£ãã¯ã¹ãè¿œå ããåŸã
ããŒããŒã¯ããã®ãã¬ãã£ãã¯ã¹ãæã€ã¯ã©ã¹ãèªåçã«æ€çŽ¢ããŠããŒãããŸãã
- require_once 'Zend / Loader / Autoloader.php' ;
- $ loader = Zend_Loader_Autoloader :: getInstance ïŒ ïŒ ;
- $ loader- > registerNamespace ïŒ 'Foo_' ïŒ ;
- $ loader- > registerNamespace ïŒ array ïŒ 'Foo_' ã 'Bar_' ïŒ ïŒ ;
ããã«ããã©ãŒã«ããã¯ã¢ãŒããæå¹ã«ã§ããŸãã ããã¯ãæ¥é èŸã«é¢ä¿ãªããããŒããŒããã¹ãŠã®ã¯ã©ã¹ãæ€çŽ¢ããããšãæå³ããŸãã
- $ loader- > setFallbackAutoloader ïŒ true ïŒ ;
ã泚æ
ãã©ãŒã«ããã¯ã¢ãŒãã䜿çšããªãã§ãã ããã ãããžã§ã¯ãã§ãã®ãªãã·ã§ã³ãæŸæ£ããããšããå§ãããŸã
Zend Frameworkã¯ãã©ããªã«é åçã«èŠããŠãã
Zend_Loader_Autoloaderã¯Zend_Loader :: loadClassïŒïŒã¡ãœããã䜿çšããŸãã
includeïŒïŒé¢æ°ã䜿çšããŠãã¡ã€ã«ãã€ã³ã¯ã«ãŒãããŸãã ãã¡ã€ã«ããªãå Žåã¯ã ã€ã³ã¯ã«ãŒãïŒïŒ
falseãè¿ããŸãã ãŸããPHPã¯èŠåãWARNING ERRORããè¿ããŸãã
ããã¯ããã€ãã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
1. display_errorsãªãã·ã§ã³ãã¢ã¯ãã£ããªå Žåããšã©ãŒèŠåãåºåã¹ããªãŒã ã«éä¿¡ãããŸãã
2.ãšã©ãŒã®åºåã衚瀺ããerror_reportingã¢ãŒããèšå®ãããŠããå Žåããããã¯ãã°ã«æžã蟌ãŸããŸã
ãã¡ã€ã«æ¥ç¶ãšã©ãŒã«é¢ãããã¹ãŠã®èŠåã
ãã¡ãããæå¹ã«ãªã£ãŠããå Žåã§ãZend_Loader_Autoloaderå ã®ãšã©ãŒåºåããªãã«ããããšãã§ããŸã
ãªãã·ã§ã³display_errors ã ãã ãããã®ãªãã·ã§ã³ã§ã¯ãåºåã¹ããªãŒã ã®ãšã©ãŒã®ã¿ãæå¶ãããŸãã
ãšã«ãããšã©ãŒã¯ãã°ã«æžã蟌ãŸããããããã¬ãã£ãã¯ã¹ã䜿çšããããšããå§ãããŸã
ã¯ã©ã¹ãããŒãããŒããŒã«ç»é²ããŸãã
泚ïŒ
ãã®ããã¥ã¢ã«ãæžããããšããPHP 5.3ãªãªãŒã¹ããªãªãŒã¹ãããŸããã ãã®ããŒãžã§ã³ã®PHPãã
åå空éããµããŒãããŸãã ãã ããZFã¯ãã®æ©èœã®åã«éçºãããŸãã
PHPã«ç»å Žãããã¬ãŒã ã¯ãŒã¯å ã§åå空éã䜿çšããããšã«åæããŸãã
ã¯ã©ã¹åã«ãã¬ãã£ãã¯ã¹ãå²ãåœãŠãŸãã ããšãã°ããã¬ãŒã ã¯ãŒã¯ã®ãã¹ãŠã®ã¯ã©ã¹ã®Zend_ãã¬ãã£ãã¯ã¹ã
ããŒãžã§ã³2以éãããŒãããŒããŒã«phpåå空éã®ãµããŒããå«ããäºå®ã§ãã
ãã¬ãŒã ã¯ãŒã¯ã
é¢æ°ã䜿çšããŠãã¡ã€ã«ãšã¯ã©ã¹ãèªåããŒãããå Žåã¯ã
pushAutoloaderïŒïŒããã³unshiftAutoloaderïŒïŒã¡ãœããã䜿çšããŠã Zend_Loader_AutoloaderããŒããŒã«è¿œå ã§ããŸãã ãããã®ã¡ãœããã䜿çšãããšãZend FrameworkããŒãããŒããŒãåŒã³åºãåãŸãã¯åŸã«ããŒãããŒããŒãè¿œå ããŠãç°ãªãããŒãããŒããŒã®ãã§ãŒã³ã圢æã§ããŸãã
ãã®ã¢ãããŒãã®å©ç¹ã¯æ¬¡ã®ãšããã§ãã
1.ãããã®åã¡ãœããã¯ã2çªç®ã®ãªãã·ã§ã³ãã©ã¡ãŒã¿ãåããŸãã
ããŒããããã¬ãã£ãã¯ã¹ã¯ã©ã¹ã ã€ãŸã Zend FrameworkããŒãããŒããŒã«äŒããããšãã§ããŸãã
ãã§ãŒã³ã«æ¥ç¶ãããããŒããŒã¯ãç¹å®ã®ãã¬ãã£ãã¯ã¹ãæã€ã¯ã©ã¹ã®ã¿ãåŠçããå¿ èŠãããããšã
2.次ã®ããã«ãããŒãå¶åŸ¡ã«åé¡ã¯ãããŸããã ãã¹ãŠã®ãã§ãŒã³ã¡ãœããã«ã¯æ©èœããããŸã
ã³ãŒã«ããã¯ã spl_autoload_functionsïŒïŒã¡ã«ããºã ã«ã¯æ¬ ããŠããŸãã
- //ã¹ã¿ãã¯ã«é¢æ°ãmy_autoloaderããè¿œå ãã
- //æ¥é èŸãMy_ããæã€ã¯ã©ã¹ã管çããã«ã¯ïŒ
- $ loader- > pushAutoloader ïŒ 'my_autoloader' ã 'My_' ïŒ ;
- //éçã¡ãœããFoo_Loaderã®åã«è¿œå ããŸã:: autoloadïŒïŒãã¹ã¿ãã¯ã«è¿œå ãã
- //æ¥é èŸãFoo_ããæã€ã¯ã©ã¹ã管çããã«ã¯ïŒ
- $ loader- > unshiftAutoloader ïŒ array ïŒ 'Foo_Loader' ã 'autoload' ïŒ ã 'Foo_' ïŒ ;
ã¹ã¿ãŒãã¢ãããªãœãŒã¹ã
å®éã®ã¢ããªã±ãŒã·ã§ã³ãéçºãããšãããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã©ã€ãã©ãªã§ã¯ãªãç¶æ³ãçºçããããšããããŸã
Zend Frameworkã§åãå ¥ããããŠããååã®æšå¥šã«è©²åœããŸãã ããã¯ããªãŒãããŒããŒã次ã®ããšãã§ããªãããšãæå³ããŸã
å¿ èŠãªãã¡ã€ã«ãèŠã€ããŸãã
ãããã£ãŠãèŠåãšããŒãããŒããŒã®èšèšã«é¢ããã»ã¯ã·ã§ã³ãèªããšãæšæž¬ã§ããŸãã
Zend Frameworkã¯ãã®åé¡ã解決ã§ããŸãã ãã®ããã«ãã¯ã©ã¹Zend_Loader_Autoloader_ResourceããããŸãã
ãªãœãŒã¹ã¯ãååã®ååšãšãå¿ èŠãªã¯ã©ã¹ã®æ€çŽ¢ãè¡ããããã¹ãæå³ããŸãã
ããã³ãã¡ã€ã«ã æãåçŽãªå Žåã次ã®ããã«ãªããŸãã
- $ loader = new Zend_Application_Module_Autoloader ïŒ array ïŒ
- 'åå空é' => 'ããã°' ã
- 'basePath' => APPLICATION_PATH '/ modules / blog' ã
- ïŒ ïŒ ;
ãŸããæ¥ç¶ãããªãœãŒã¹ã®ã¿ã€ããããŒãããŒããŒã«éç¥ããå¿ èŠããããŸãã
ãããã®ã¿ã€ãã¯ããŒãšå€ã®ãã¢ã§ãã
ããšãã°ã次ã®ãã£ã¬ã¯ããªããªãŒã䜿çšããŸãã
- ãã¹/ to / some / resources /
- |-ãã©ãŒã /
- | ` -ã²ã¹ãããã¯ã php // Foo_Form_Guestbook
- |-ã¢ãã«/
- | | -DbTable /
- | | ` -ã²ã¹ãããã¯ã php // Foo_Model_DbTable_Guestbook
- | |-ã²ã¹ãããã¯ã php // Foo_Model_Guestbook
- | `-GuestbookMapper php // Foo_Model_GuestbookMapper
ãŸãããªãœãŒã¹ãäœæããŸãã
- $ loader = new Zend_Loader_Autoloader_Resource ïŒ array ïŒ
- 'basePath' => 'path / to / some / resources /' ã
- 'namespace' => 'Foo' ã
- ïŒ ïŒ ;
ãã®åŸããªãœãŒã¹ã®ã¿ã€ãã決å®ããå¿ èŠããããŸãã Zend_Loader_Autoloader_Resourse :: addResourceTypeïŒïŒã¡ãœãã
3ã€ã®åŒæ°ãåããŸãã æåã®åŒæ°ã¯ãªãœãŒã¹ã®ååã§ãã 2çªç®ã®åŒæ°ã¯ããªãœãŒã¹ã®ã«ãŒããã£ã¬ã¯ããªã«é¢é£ããç¹å®ã®ãªãœãŒã¹ãæ€çŽ¢ãããã£ã¬ã¯ããªã§ãã 3çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ãã¯ã©ã¹ãã¬ãã£ãã¯ã¹ïŒãŸãã¯åå空éïŒã§ãã
ãã®äŸã§ã¯ã3çš®é¡ã®ãªãœãŒã¹ããããŸãã æåã®ãã©ãŒã ã¯formsãã£ã¬ã¯ããªã«ããããã¬ãã£ãã¯ã¹ãForm_ããä»ããŠããŸãã 2çªç®ã®ã¢ãã«ã¯ãmodelsãã£ã¬ã¯ããªã«ããã察å¿ãããã£ã¬ã¯ããªã«Model_ãšãããã¬ãã£ãã¯ã¹ãš3çªç®ã®dbTableããããŸãã
- $ loader- > addResourceType ïŒ 'form' ã 'forms' ã 'Form' ïŒ
- -> addResourceType ïŒ 'model' ã 'models' ã 'Model' ïŒ
- -> addResourceType ïŒ 'dbtable' ã 'models / DbTable' ã 'Model_DbTable' ïŒ ;
çºè¡šåŸã次ã®ã¯ã©ã¹ã䜿çšããŠãªãœãŒã¹ãããŒãã§ããŸãã
- $ form = new Foo_Form_Guestbook ïŒ ïŒ ;
- $ guestbook = new Foo_Model_Guestbook ïŒ ïŒ ;
ãããã«
Zend Frameworkã¯ããªãŒãããŒãã£ã³ã°ã¯ã©ã¹ã®äœ¿çšãæšå¥šããåæåããŸã
Zend_Applicationã¯ã©ã¹ã®ãã®ã¡ã«ããºã ã
ãã®ã¬ã€ããZend_Loader_Autoloaderã³ã³ããŒãã³ãã®äœ¿çšã«é¢ããå¿ èŠãªæ å ±ãæäŸããç¬èªã®ã«ã¹ã¿ã ãªãŒãããŒããŒãšãªãœãŒã¹ãªãŒãããŒããŒãæ¥ç¶ãããªã©ã®å©ç¹ãç解ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ãã¬ãŒã ã¯ãŒã¯ã®ã³ã³ããŒãã³ãã§ããZend_Loader_Autoloaderããã³Zend_Loader_Autoloader_Resourceã®è©³çŽ°ã«ã€ããŠã¯ãããã¥ã¢ã«ã®å¯Ÿå¿ããã»ã¯ã·ã§ã³ãåç §ããŠãã ããã Zend_Loader_Autoloaderããã³Zend_Loader_Autoloader_Resource