LINUX.ORG.RU

История изменений

Исправление KRoN73, (текущая версия) :

А, вообще, использование глобальных конфигов оказалсь порочной практикой, так что я их использование понемногу сворачиваю. Только чисто хостовые настройки, типа доступа к БД, корневых доменов и т.п.

А то в свете Web-фреймворки: где есть и как реализована (и как называется) «мультипроектность»? стали при смешении проектов конфликты вылезать.

Скажем, задан корень сайта как config_set('main_site_url', 'http://my-site.tld'). И используется в классах url, генерируемые от этого параметра. Потом, бац, подключаем к работе второй проект, с таким же именем переменной. И иди потом разруливай внешние ссылки на объекты :)

Типа, раньше часто использовал общие метаклассы ядра фреймворка, навроде, зачем мне делать свой класс вьюхи простой страницы, если можно всё общим темплейтом вьюхи ядра фреймворка отдавать, а конфигурить его конфигом. Вот тут и полезли конфликты при соединении проектов.

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

Тем более, что есть гибкие классы-конфигураторы, так что часто в классе проекта достаточно указать только класс его конфигуратора. Так часто он из двух строчек на yaml и состоит:

extends: bors_page
config_class: aviaport_admin_config

А уже оно скомпилится в кеш в виде:

<?php

class aviaport_admin_meta_page extends bors_page
{

    function config_class() { return 'aviaport_admin_config'; }

    function class_file() { return ec('/var/www/admin.aviaport.ru/bors-site/classes/aviaport/admin/meta/page.yaml'); }
}

Исправление KRoN73, :

А, вообще, использование глобальных конфигов оказалсь порочной практикой, так что я их использование понемногу сворачиваю. Только чисто хостовые настройки, типа доступа к БД, корневых доменов и т.п.

А то в свете Web-фреймворки: где есть и как реализована (и как называется) «мультипроектность»? стали при смешении проектов конфликты вылезать.

Скажем, задан корень сайта как config_set('main_site_url', 'http://my-site.tld'). И используется в классах url, генерируемые от этого параметра. Потом, бац, подключаем к работе второй проект, с таким же именем переменной. И иди потом разруливай внешние ссылки на объекты :)

Типа, раньше часто использовал общие метаклассы ядра фреймворка, навроде, зачем мне делать свой класс вьюхи простой страницы, если можно всё общим темплейтом вьюхи ядра фреймворка отдавать, а конфигурить его конфигом. Вот тут и полезли конфликты при соединении проектов.

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

Тем более, что есть гибкие классы-конфигураторы, так что часто в классе проекта достаточно указать только класс его конфигуратора. Так часто он из двух строчек на yaml и состоит:

extends: bors_page
config_class: aviaport_admin_config

Исходная версия KRoN73, :

А, вообще, использование глобальных конфигов оказалсь порочной практикой, так что я их использование понемногу сворачиваю. Только чисто хостовые настройки, типа доступа к БД, корневых доменов и т.п.

А то в свете Web-фреймворки: где есть и как реализована (и как называется) «мультипроектность»? стали при смешении проектов конфликты вылезать.

Скажем, задан корень сайта как config_set('main_site_url', 'http://my-site.tld'). И используется в классах url, генерируемые от этого параметра. Потом, бац, подключаем к работе второй проект, с таким же именем переменной. И иди потом разруливай внешние ссылки на объекты :)

Типа, раньше часто использовал общие метаклассы ядра фреймворка, навроде, зачем мне делать свой класс вьюхи простой страницы, если можно всё общим темплейтом вьюхи ядра фреймворка отдавать, а конфигурить его конфигом. Вот тут и полезли конфликты при соединении проектов.

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

Тем более, что есть гибкие классы-конфигураторы, так что часто в классе проекта достаточно указать только класс его конфигуратора. Так часто он из двух строчек на yaml и идут:

extends: bors_page
config_class: aviaport_admin_config