Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите разобраться с пространством имен / 9 сообщений из 9, страница 1 из 1
18.11.2012, 13:48:12
    #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
18.11.2012, 13:52:03
    #38043080
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с пространством имен
Т.е. какие могли бы возникнуть проблемы, если бы не использовал пространства?
...
Рейтинг: 0 / 0
18.11.2012, 14:24:03
    #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
18.11.2012, 14:56:00
    #38043109
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с пространством имен
Ммм... А как php узнаёт, где лежат файлы с нужными классами, если не указываем ему явно? Сканирует все директории?
...
Рейтинг: 0 / 0
18.11.2012, 15:47:29
    #38043150
SergSW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с пространством имен
Shitbox2,

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

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

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


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