[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: AdcAutoloader.php
Страницы: 1, 2, 3, 4
twin
Цитата (Dezigo @ 9.10.2015 - 12:48)
twin
Закачай на github

Сейчас. Еще маленько)

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
OleKh
Цитата (twin @ 9.10.2015 - 14:32)
Всё. Решил я проблему. Теперь автолоадер можно и автономно подключать, без ABC :)

Другими словами сейчас фреймворк можно запустить тремя способами.


Теперь до меня дошло как тут используется psr-4, т.е. когда создается объект и класс не загружен, автоматически вызывается функция spl_autoload_register(function ($class) {}) и в переменную $class передается '\abc\core\config\config' и класс подгружается по этому пути.

$obj = new abc\core\config\config(); 


и в принципе уже не имеет значения где вызывается функция spl_autoload_register(), я вызывал в разных местах и из корневой директории, отрабатывает без ошибок.
OleKh
Цитата (twin @ 9.10.2015 - 15:22)
Цитата (Dezigo @ 9.10.2015 - 12:48)
twin
Закачай на github

Сейчас. Еще маленько)

copyright уже надо вставлять smile.gif
twin
Всё, залил на гитхаб. smile.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Oyeme
Цитата
Вот допустим OleKh мне плюсик в карму закатал


А ну так это теперь меняет весь этап разработки! laugh.gif
OleKh
Цитата (Oyeme @ 9.10.2015 - 16:28)
Цитата
Вот допустим OleKh мне плюсик в карму закатал


А ну так это теперь меняет весь этап разработки! laugh.gif

если чессно) я даже не ожидал, что выйдет что-то полезное, а когда проверил так обрадовался, что работает автолоадер, что решил хоть как-то twin поощрить)

есть у меня и критика, но не охота сегодня, такой день продуктивный и есть сдвиги в хорошую сторону)
OleKh
Цитата (twin @ 9.10.2015 - 15:22)
Сейчас. Еще маленько)

Постой паровоз, не стучите колеса ...

Мы протестили успешно только функцию spl_autoloader_register(), а не желаете ознакомиться с критикой того как реализован класс AbcAutoloader?

И кстати, вот уже и первые ошибки архитектуры на примере bootstrap abc вырисовываются на диаграмме в теме про проектирование.
1. Обозначили AbcAutoloader как класс на диаграмме, а в файле нативная функция.
2. Где конфиги фреймворка? Может было бы правильно создать класс констант и создать константу const PATH_AUTOLOADER = __DIR__ .'/core/AbcAutoloader.php'.

/**
*
@var string
*/

protected $autoload = __DIR__ .'/core/AbcAutoloader.php';
...

$this->autoload = AbcConfig::PATH_AUTOLOADER;



3. Где в архитектуре интерфейсы? Абстрактные классы? Почему бы не создать интерфейс abcIHelper, class abcHelper и abcAutoloader extends abcHelper.
twin
Добавил префикс. Забыл совсем, что без него он с приложениями не будет работать. :)
Хотел константой сначала, потом подумал - нефиг)) Пусть будет имя фреймворка обязательным.
<?php


defined('ABC_BASE_PATH') or define('ABC_BASE_PATH', dirname(dirname(dirname(__DIR__))));
defined('ABC_REPOSITORY_NAME') or define('ABC_REPOSITORY_NAME', basename(dirname(dirname(__DIR__))));

spl_autoload_register(function ($class) {
// Удаляет префикс
$class = preg_replace('#^ABC\\\#u', '', $class);

$files[] = ABC_REPOSITORY_NAME .'/'. $class;
$files[] = ABC_VERSIONS_NAME .'/'. $class;

foreach ($files as $file) {
$file = stream_resolve_include_path(ABC_BASE_PATH .'/'. $file .'.php');

if(is_readable($file)) {
include_once $file;
break;
}
}
}
);


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.