Namespace Pada Phalcon

Namespace pada Phalcon dapat digunakan untuk menghindari tabrakan nama kelas; ini berarti bahwa jika Anda memiliki dua kontroler dalam sebuah aplikasi dengan nama yang sama, namespace dapat digunakan untuk membedakan mereka. Namespace juga berguna untuk membuat bundel atau modul.

Menyiapkan Framework 

Menggunakan namespace pada phalcon memiliki beberapa implikasi ketika loading controller yang sesuai. Untuk menyesuaikan perilaku framework untuk namespace yang diperlukan untuk melakukan satu atau semua tugas-tugas berikut:

Gunakan strategi autoload yang memperhitungkan namespace misalnya dengan Phalcon \ Loader:

<?php

$loader->registerNamespaces(
    array(
       'Store\Admin\Controllers'    => "../bundles/admin/controllers/",
       'Store\Admin\Models'    => "../bundles/admin/models/",
    )
);

Sebutkan dalam rute sebagai parameter terpisah di jalur rute ini:

<?php

$router->add(
    '/admin/users/my-profile',
    array(
        'namespace'  => 'Store\Admin',
        'controller' => 'Users',
        'action'     => 'profile',
    )
);

Meneruskan sebagai bagian dari rute:

<?php

$router->add(
    '/:namespace/admin/users/my-profile',
    array(
        'namespace'  => 1,
        'controller' => 'Users',
        'action'     => 'profile',
    )
);

Jika Anda hanya bekerja dengan namespace yang sama untuk setiap kontroler dalam aplikasi Anda, maka Anda dapat menentukan namespace default dalam Dispatcher, dengan melakukan hal ini, Anda tidak perlu menentukan nama kelas full di jalur router:

<?php

//Registering a dispatcher
$di->set('dispatcher', function() {
    $dispatcher = new \Phalcon\Mvc\Dispatcher();
    $dispatcher->setDefaultNamespace('Store\Admin\Controllers');
    return $dispatcher;
});

Controller pada namespace 

Contoh berikut ini menunjukkan bagaimana menerapkan controller yang menggunakan ruang nama:

<?php

namespace Store\Admin\Controllers;

class UsersController extends \Phalcon\Mvc\Controller
{

    public function indexAction()
    {

    }

    public function profileAction()
    {

    }

}

Model dalam namespace 

Perhatikan berikut ke dalam pertimbangan ketika menggunakan model dalam namespace:

<?php

namespace Store\Models;

class Robots extends \Phalcon\Mvc\Model
{

}

Jika model memiliki relasi mereka harus menyertakan namespace juga:

<?php

namespace Store\Models;

class Robots extends Phalcon\Mvc\Model
{
    public function initialize()
    {
        $this->hasMany('id', 'Store\Models\Parts', 'robots_id', array(
            'alias' => 'parts'
        ));
    }
}

Dalam PHQL Anda harus menulis statemen termasuk namespace:

<?php

$phql = 'SELECT r.* FROM Store\Models\Robots r JOIN Store\Models\Parts p';

 

Terjemah dr Namespace Pada Phalcon
http://docs.phalconphp.com/en/latest/reference/namespaces.html