使用命å空间
=======================
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