powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с пространством имен
9 сообщений из 9, страница 1 из 1
Помогите разобраться с пространством имен
    #38043079
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни одной толковой статьи не встретил по этому поводу, не говоря уже о практическом применении.
В общем, суть такова:

В папке classes/db у меня лежит скрипт class.php
Код: php
1.
2.
3.
4.
5.
6.
7.
namespace Classes\Db;
	
class MySql {
	...
	public function connect() { ... }
	...
}


аналогично разложены и другие классы

В основном скрипте main.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
include_once("classes/db/class.php");
include_once("classes/tools/class.php");

$db = new Classes\\Db\\MySql;
$tool = new Classes\\Db\\Tools;

$db->connect();
$tool->write('бла-бла');


И какое преимущество от использования пространства имен получу в этом случае?
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043080
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. какие могли бы возникнуть проблемы, если бы не использовал пространства?
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043095
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

использовать автолоадер классов. Тогда об include можно будет забыть.

И работа с классами будет похожа на работу в Java, C#.

Подключил нужный неймспейс и используй всё что в него входит свободно. При этом становится безразлично где физически файл с нужным классом лежит.

Но при этом лучше код писать в Java style режиме, т.е. один файл - один класс.

Ваш код тогда примет вид
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
use Classes\Db\MySql;
use Classes\Db\Tools;

$db = new MySql;
$tool = new Tools;

$db->connect();
$tool->write('бла-бла');
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043109
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ммм... А как php узнаёт, где лежат файлы с нужными классами, если не указываем ему явно? Сканирует все директории?
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043150
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2,

Базовые директории указываются в загрузчике. Логика поиска прописывается там же.
Обычно каждый уровень пространства имен -папка, класс - непосредственно файл.
Но никто не мешает Вам свою схему придумать.
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043406
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ какое преимущество от использования пространства имен получу в этом случае?
у тебя может быть два класса User в проекте.
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043454
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, допустим у меня два класса User. И как это поможет избежать конфликта? Можно пример. Не догоняю(
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043487
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каких конфликтов?
...
Рейтинг: 0 / 0
Помогите разобраться с пространством имен
    #38043513
SergSW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2Хорошо, допустим у меня два класса User. И как это поможет избежать конфликта? Можно пример. Не догоняю(

Имена одинаковые namespace - разные, как следствие конфликтов нет.

А нужно это когда не только ты один код пишешь (и коллизии в именах классов весьма вероятны), либо когда сторонние библиотеки используешь.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с пространством имен
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]