Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перевод проекта на "Namespace"

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
GoDr
Отправлено: 21 Августа, 2015 - 19:58:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Наверное вопрос уже очень актуальный. Суть простая. Есть достаточно большой код (CMS).
Тенденции развития заставляют делать код "современным".

В принципе два вопроса:
1. На сколько целесообразно переводить движок на "Namespace"?
2. Если ДА, то это вообще реально сделать? И как, с чего начать?


-----
Система управления веб-содержимым Lotos CMS
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Августа, 2015 - 20:03:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




1) Если не нужна поддержка 5.2 -- вперде и с песней.
2) Начать с того, что разложить компоненты системы по папочкам -- из этой структуры вытекает и неймспейс.
 
 Top
GoDr
Отправлено: 21 Августа, 2015 - 20:20:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




DeepVarvar пишет:
1) Если не нужна поддержка 5.2 -- вперде и с песней.
я в принципе уже "кинут" 5.3 и начал делать 5.4+. Думаю основные игроки предоставляющие хостинг к этому готовы.

DeepVarvar пишет:
2) Начать с того, что разложить компоненты системы по папочкам -- из этой структуры вытекает и неймспейс.
Ну это понятно.. Вот только как это оптимальнее организвать.. Это же нужно в каждый файл залезть и каждый вызов функций/методов переписать... а это достаточно большое количество..
Просто может у кого есть частный опыт в этом.

Конечно многого хочу, но очень хочется объяснения "на пальцах" Хорошо Т.е. нюансы, тонкости, проблемы...


-----
Система управления веб-содержимым Lotos CMS
 
 Top
DlTA
Отправлено: 21 Августа, 2015 - 21:31:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




GoDr пишет:
Это же нужно в каждый файл залезть и каждый вызов функций/методов переписать... а это достаточно большое количество..

уууууууууууу, это перспектива большиииииих проблем
а вообще все зависит от того как оно у вас там все подключается и инициализируется
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Августа, 2015 - 21:33:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




GoDr пишет:
а это достаточно большое количество
Даже если их будет тысяча -- за 10 дней сделаешь спокойно.
GoDr пишет:
нюансы, тонкости, проблемы
Это уже тянет на докторскую )) Так что лучше спрашивай конкретнее.
 
 Top
caballero
Отправлено: 22 Августа, 2015 - 00:33:42
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




глупо переделывать работающий котд потому что некая тенденция.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DeepVarvar Супермодератор
Отправлено: 22 Августа, 2015 - 00:34:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




caballero пишет:
глупо переделывать работающий котд потому что некая тенденция
Аааааа! Люто плюсую!!!!
 
 Top
GoDr
Отправлено: 23 Августа, 2015 - 08:34:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




DeepVarvar пишет:
Даже если их будет тысяча -- за 10 дней сделаешь спокойно.
Что-то как-то очень оптимистично Улыбка

Тогда по другому спрошу.. То что я делаю новое (модули, библиотеки и т.п.) вот их целесообразно делать "по новому"? Таким образом новое постепенно вытеснит старое.

На сколько вообще оправдано такое смешение стиля написания кода?


-----
Система управления веб-содержимым Lotos CMS
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Августа, 2015 - 16:03:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Если ты введешь неймспейсы, ты будешь вынужден перепилить и старое, иначе, как ты будешь неймспйсинг автолоадить? Костылить автолоадер? Ну можно, а смысл тогда?
 
 Top
GoDr
Отправлено: 24 Августа, 2015 - 08:48:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




Всё понял.. спасибо за советы..
Придётся всё переписывать


-----
Система управления веб-содержимым Lotos CMS
 
 Top
GoDr
Отправлено: 02 Сентября, 2015 - 10:17:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




В общем делюсь первыми впечатлениями...

Пишу уже то, что нужно делать.. А то я неделю на грабли наступал.

Первым делом открываете свой IDE, у меня PhpStorm (всем советую, для проектов с лицензиями свободного программного обеспечения лицензия бесплатная). Настраиваем Инспектор только на что-то подобное:
- Undefined class: Declaration of referenced class is not found in built-in library and project files.
- Referenced function, method, field or class from callback is not found
- Referenced constant is not found in subject class.
- Declaration of referenced constant is not found in built-in library and project files.
- Referenced field is not found in subject class.
- Declaration of referenced function is not found in built-in library and project files.
- Label is not found in current scope.
- Referenced method is not found in subject class.
- Referenced namespace is not found.

Оставил только эти, остальные уже при тестировании...

Находим проблемы и исправляем их.

Далее кропотливо открываем каждый файл и вставляем NameSpase в начало. Была мысль написать скриптик, но побоялся что-то попортить, а вдруг Улыбка Но в принципе, скрипт не очень сложный должен получиться...

Дальше снова запускаем инспектор и начинаем править вызовы классов, методов и т.п.
Тут всё зависит от самих файлов, где проще добавить \ХХХ\Class, а де всё же через use...

Теперь что касается 10 дней... НЕ РЕАЛЬНО! Радость

У меня был "тестовый забег", просидел почти две недели - не далеко продвинулся... Затягивает время ещё то, что по ходу всплывают какие-то сторонние ошибки..

Ещё столкнулся с такой бедой как название самих классов и их размещение по файлам.. Т.е. нет системы. Например, библиотеки не имеют определяющего префикса, название файлов и классов очень разнятся, в одном файле несколько классов.
В связи с этим Автолоадер получается с костыльцом на начальном этапе, приходится учитывать некоторые особенности...
PHP:
скопировать код в буфер обмена
  1. class Autoloader
  2. {
  3. ................
  4.     protected static $_path = ['lib', 'core', 'api', 'fun'];
  5. ................
  6.     public static function autoload($file)
  7.     {
  8.         $file = str_replace('\\', '/', strtolower($file));
  9.  
  10.         if (preg_match('#\/(' . implode('|', self::$_path) . ')([\w]+)$#', $file, $m)) {
  11.             $path = _PATH_ROOT . '/'. str_replace($m[0], '/' . $m[2], $file) . '.php';
  12.         }else{
  13.             $path = _PATH_ROOT . '/' . $file . '.php';
  14.         }
  15.  
  16.         if (file_exists($path)) {
  17.             require_once($path);
  18.         }else{
  19.             throw new \Exception(_EXCEP_ISNOT_CLASS);
  20.         }
  21.     }
  22. ..............
  23. }
  24.  


PS
Как я сказал, это пробный этап переделки проекта.. Для полноценного передела нужно всё для начала разложить по полкам


-----
Система управления веб-содержимым Lotos CMS
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Сентября, 2015 - 11:32:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




GoDr пишет:
strtolower($file)
Но зачем? Именуй файлы в правильном кейсе.
GoDr пишет:
$path = _PATH_ROOT . '/' . $file . '.php';
Да, положи их куданить еще, чтоб в корне не валялись.
GoDr пишет:
10 дней... НЕ РЕАЛЬНО!
Ну... у меня противоположный опыт. Так еще и в чужом коде. А со своим я бы даже быстрее разобрался.
Хотя, все зависит от качества имеющегося кода, может там полная жопка. Да.

И не бойся автоматизировать -- бекапы наше все.
 
 Top
DelphinPRO
Отправлено: 02 Сентября, 2015 - 11:37:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




GoDr пишет:
где проще добавить \ХХХ\Class, а де всё же через use...

Лучше все же выбрать единый стиль.

GoDr пишет:
Автолоадер получается с костыльцом

Когда уже люди осознают, что автолоадер писать руками в наше время - сам по себе огромный костыль... Есть Composer, он прекрасно справляется с данной задачей.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Сентября, 2015 - 12:12:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DelphinPRO пишет:
Когда уже люди осознают
Вот не хватит тебе (образно говоря) одного байта -- припомнишь мои слова ))
 
 Top
GoDr
Отправлено: 02 Сентября, 2015 - 13:09:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




DeepVarvar пишет:
Да, положи их куданить еще, чтоб в корне не валялись.

Это я пока "образно" накидал. Предполагается что вызов будет \ХХХ\Class, что уже является путём к файлу

DeepVarvar пишет:
Но зачем? Именуй файлы в правильном кейсе.
Это личное, не люблю в файлах иметь заглавные буквы Радость . И кто-знает как система воспримет совместимость разных регистров..

DeepVarvar пишет:
Хотя, все зависит от качества имеющегося кода, может там полная жопка. Да.
Наследие Джумлы Огорчение Там не только жопа но и г... остаётся ещё много от чего пока ещё не избавился.. Но осталось чуть-чуть Радость

DelphinPRO пишет:
Есть Composer, он прекрасно справляется с данной задачей.
Да вот сколько пытаюсь освоить, но пока не получается.. Или критическая задача не стояла, или второе.... Теорию понимаю, практику пока не очень могу освоить... А может просто нет в этом необходимости

(Отредактировано автором: 02 Сентября, 2015 - 13:09:58)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB