使用命å空间 ======================= Namespaces_ å¯ä»¥ç”¨æ¥é¿å…ç±»å冲çªï¼Œè¿™æ„味ç€ï¼Œå¦‚æžœä½ æœ‰ä¸¤ä¸ªæŽ§åˆ¶å™¨ï¼Œåœ¨åº”ç”¨ç¨‹åºä¸ä½¿ç”¨ç›¸åŒçš„å称, å¯ä»¥ä½¿ç”¨å‘½å空间æ¥åŒºåˆ†ä»–们。命å空间是也å¯ç”¨äºŽåˆ›å»ºmodule。 Setting up the framework ------------------------ 使用命åç©ºé—´æ—¶å¯¹åŠ è½½ç›¸åº”æŽ§åˆ¶å™¨ä¼šæœ‰ä¸€å®šçš„å½±å“。需è¦è°ƒæ•´æ¡†æž¶å‘½å空间的行为,å¯ä»¥å®žçŽ°åŠ è½½ä¸€ä¸ªæˆ–å…¨éƒ¨ï¼š ä½¿ç”¨è‡ªåŠ¨åŠ è½½çš„æ–¹å¼éœ€è¦è€ƒè™‘命å空间的影å“,以下是使用 Phalcon\\Loader 的示例: .. code-block:: php <?php $loader->registerNamespaces( array( 'Store\Admin\Controllers' => "../bundles/admin/controllers/", 'Store\Admin\Models' => "../bundles/admin/models/", ) ); 在定义路由时,控制器的路径å¯ä»¥æŒ‡å®šæŽ§åˆ¶å™¨çš„å…¨å称: .. code-block:: php <?php $router->add( "/admin/users/my-profile", array( "controller" => "Store\Admin\Users", "action" => "profile", ) ); 把命åç©ºé—´å½“ä½œè·¯ç”±å®šä¹‰çš„å‚æ•°(详è§è·¯ç”±å™¨ç« 节): .. code-block:: php <?php $router->add( "/:namespace/admin/users/my-profile", array( "namespace" => 1, "controller" => "Users", "action" => "profile", ) ); å¦‚æžœä½ åªåœ¨ä½ 的应用程åºä¸å¯¹æ¯ä¸ªæŽ§åˆ¶å™¨ä½¿ç”¨ç›¸åŒçš„命åç©ºé—´ï¼Œé‚£ä¹ˆä½ å¯ä»¥åœ¨æ³¨å†Œåˆ†å‘器时定义一个默认的命åç©ºé—´ï¼Œè¿™æ ·åšçš„è¯ï¼Œä½ å°±ä¸å†éœ€è¦åœ¨å®šä¹‰è·¯ç”±çš„æ—¶å€™æŒ‡å®šå®Œæ•´çš„ç±»å称了: .. code-block:: php <?php //Registering a dispatcher $di->set('dispatcher', function() { $dispatcher = new \Phalcon\Mvc\Dispatcher(); $dispatcher->setDefaultNamespace('Store\Admin\Controllers\\'); return $dispatcher; }); Controllers with Namespaces --------------------------- 下é¢çš„示例演示如何实现使用命å空间æ¥ç¼–写一个控制器: .. code-block:: php <?php namespace Store\Admin\Controllers; class UsersController extends \Phalcon\Mvc\Controller { public function indexAction() { } public function profileAction() { } } Models in Namespaces -------------------- 对于模型,使用getSourceæ¥æŒ‡å®šå…³è”的数æ®è¡¨æ˜¯éžå¸¸å¿…è¦çš„: .. code-block:: php <?php namespace Store\Toys; class Robots extends \Phalcon\Mvc\Model { public function getSource() { return "robots"; } } å¦å¤–ï¼Œå› ä¸ºå‘½åç©ºé—´çš„åŽŸå› ï¼Œä¸€äº›é”æœ¯æ–¹æ³•ä¸èƒ½å¦‚预期般è¿è¡Œï¼Œä½ å¯ä»¥æŒ‰å¦‚ä¸‹æ–¹å¼æ‰‹å·¥å®šä¹‰æ£ç¡®çš„行为: .. code-block:: php <?php namespace Store\Toys; class Robots extends \Phalcon\Mvc\Model { public function getSource() { return "robots"; } public function initialize() { $this->hasMany("id", 'Store\Toys\RobotsParts', 'robots_id'); } public function getRobotsParts($arguments=null) { return $this->getRelated('Store\Toys\RobotsParts', $arguments); } } .. _Namespaces: http://php.net/manual/en/language.namespaces.php