Я пытаюсь воспитывать себя с функциями PHP 5.3/PHP 5.4 OOP.PHP Пространства имен, что использует и означает, и выполняют ли они автозагрузку классов?
Я пытался кодировать что-то вроде этого. Однако это не сработает.
index.php
namespace Website;
use Website\Database as Database;
class Website extends Database
{
function __construct()
{
echo "Test";
}
}
$website = new Website();
./Website/Database.php
namespace Website\Database;
class Database
{
function construct()
{
echo "Hello from Database";
}
}
Я знаю, как сделать занятия, связать их друг друга и т.д., но всякий раз, когда я добавить пространство имен к вершине, все сломается.
Поэтому я хотел бы попросить несколько элементарных вещей;
Q1: use ClassName;
означает, что он автоматически загружает/включает в себя класс?
Q2: Что делает \
означает без каких-либо изменений на левой стороне. (Например новый \ Database();)
Q3: Есть ли \
означает каталог, в PHP, или это только то, как разработчики рассматривать его как?
Q4: Какие изменения должны быть внесены в мой скрипт, чтобы заставить его работать? !
Q1: Если я использую использование базы данных; в файле; мне нужно require_once ('Database.php')? Q2: достаточно ясно. Q3: Да, я знаю об этом, но когда я проверяю источники некоторых фреймворков, они используют что-то вроде: use ExceptionHandler \ FileHandler \ FileUploadException; и реальный путь к файлу подобен ./ExceptionHandler/FileHandler/FileUploadException.php - Это что-то, что разработчики рассматривают как каталоги, потому что легче найти то, что они ищут? –
Q1 - вам нужно либо потребовать, либо включить автозагрузчик, который может обрабатывать классы пространств имен. –
Структуры каталогов, сопоставленные структурам пространств имен, - это просто удобство ... это необязательно, но с ним проще работать - но эти два не должны считаются идентичными, так как это может привести к непониманию того, что на самом деле является пространством имен. –