PHP: как реализовать пространство имен в этой структуре - PullRequest
0 голосов
/ 28 января 2012

это моя папка / структура php:

mvc
    controller
        login.class.php
    model
        login.class.php
lib
    login.class.php
core
    controller.class.php
    model.class.php
    core.class.php

core.class.php code

<?php
class core
{
    public static function load()
    {
        require_once('lib.class.php');
        require_once('controller.class.php');
        require_once('model.class.php');
    }
}
core::load();
?>

я не знаю, где установить пространства имен, чтобы сделать что-то подобное:

\LIB\login.class.php
\CONTROLLER\login.class.php
\MODEL\login.class.php

спасибо:)

Ответы [ 3 ]

2 голосов
/ 28 января 2012

Вы должны определить пространство имен как первый оператор в каждом файле (namespace my\namespace;). Когда пространство имен совпадает с папкой, вы можете использовать следующий автозагрузчик для автоматической загрузки необходимых файлов:

spl_autoload_register(function ($className) {
    $namespaces = explode('\\', $className);
    if (count($namespaces) > 1) {
        $classPath = APPLICATION_BASE_PATH . implode('/', $namespaces) . '.class.php';
        if (file_exists($classPath)) {
            require_once($classPath);
        }
    }
});
1 голос
/ 28 января 2012

Объявления пространства имен идут вверху файла:

<?php
namespace Foo;
0 голосов
/ 29 января 2012
mvc
    controller
        login.class.php
    model
        login.class.php
lib
    login.class.php

index.php

MVC / контроллер / login.class.php

<?php
namespace controller;
require_once('mvc/model/login.class.php');
class login
{
    public function __construct()
    {
        $login = new \model\login();
    }
}
?>

MVC / модель / login.class.php

<?php
namespace model;
require_once('lib/login.class.php');
class login
{
    public function __construct()
    {
        $login = new \lib\login();
    }
}
?>

Библиотека / login.class.php

<?php
namespace lib;

class login
{
    public function __construct()
    {
        // core class instance
        $login = new \DOMDocument();
    }    
}
?>

index.php

<?php
require_once('mvc/controller/login.class.php');

$login = new \controller\login();
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...