Мало ли какая ОС, да и то, что винда поддерживает - не есть стандарт.
Полностью динамическое задание path у вас не получится, у PHP с этим огромные косяки, которые никто не думает править, в любом случае вам придется либо один раз жестко дефайнить, либо постоянно держать директорию проекта в include_path.
Сейчас я ищу нечто большее, чем простую абстракцию к интерфейсу БД, нужен целый фреймворк, который устраивал бы меня по 2/3 своих возможностей, а такого пока я не видел.
Однако, безусловно, есть люди, которые "пиарят", а есть люди, которые этот пиар заказывают. Потом вступает в силу момент "перформанса", когда дядя покупает десятые проценты акций компании, тем самым подымая цену до небес (хотя умный человек сразу поймет, что дядя денег не много потратил, а резонанс большой, тут подвох), потом на сцену выходят главные действующие лица - "дойные коровы", т.е. дурачки, которые отдают миллиарды за более ощутимые доли в компании, компания взлетает до небес. Тут появляются клоны "заказчиков пиара", естественно, более мелкие, естественно для более мелких кампании, и так по нисходящей.
А задают тон те же ИТшники, которые провозгласили "невероятную ценность информации, человеческих отношений и всего остального, что нематериально", за ними последовали другие :)
Все это рухнет, если так будет продолжаться, как с рынком недвижимости в США, только в несколько раз сильнее..
Я не пишу "как нужно", если вы заметили, я просто правильно выразил мысли человека, а правильные они или нет - пусть другие исправляют :)
А Singleton нужен в случае, когда вам нужен exactly one instance of your class :) Причем экземпляр создается, сам по себе класс несет нагрузку объекта...А Registry в данном случае - нет.
Там все до ужаса просто, никаких особых features я не заметил. Нормальные вещи (те же quote*) реализованы достаточно тупо, когда в метод попадает integer оно зачем-то квотит его, ну и подобные мелочи. Смысл обеих этих функций в одном и том же, только quoteIdentifier еще в `` квотит, но в мануале ничего нормально не неписано, есть еще escapeSimple, короче, полный бред...
А еще я хотел иметь аналог mysql_last_id(), т.к. в PEAR::DB этого ПОЧЕМУ-ТО нет :) Зато там есть некие sequences, которые вместо возврата LAST_INSERT_ID позволяют создавать последовательности вставок, где будет храниться LAST_INSERT_ID, короче там вместо 1 функции приходится использовать 3 с мудреной логикой, причем для каждой sequence создается еще и своя таблица в бд...с ума сойти :)
Мне понадобилось изменить поведение функций quoteIdentifier и quoteSmart, решил делать стандартно через полиморфизм, у меня вообще PEAR::DB подружался через extended класс, который реализован как Singleton, чтобы не держать кучу соединений с базой. Поэтому я и решил переопределять все через DDB просто переопределив функции, но не тут то было...Создаваемый в приложении instance класса DDB на самом деле являлся экземпляром DB и никакими хаками мне это обойти не удалось, предлагали использовать Decorator pattern, по-моему, но результато это не дало никакого.
Решил, что больше PEAR штуки в проектах постараюсь не использовать :)
Драйвер нужен в любом случае для работы с БД, он никак не вписывается ни в вид, ни в контроллер, только отдаленно относится к модели представления данных.
Кто-то из нас определенно тупит :)
в PHP4 нет ни public, ни static в данном контексте. А что вы подразумеваете под "неполноценными" и "полноценными" классами мне не понятно...
Есть такой шаблон - Singletone, это и есть его реализация.
SPL тут ни к чему, все нормально решается стандартными методами и поставкой :)
Если вы используете PHP5 и пишете, что все ТОЛЬКО для PHP5, будьте добры использовать exceptions, а не die :) И область видимости методов отмечайте, статичность и т.п. :)
$site_path можно было define('ROOT_PATH', '/var/www/localhost/htdocs'), вместо переменной, DIRSEP как-то не смотрится по сравнению с DIRECTORY_SEPARATOR, последнее хоть и длиннее, но дает четкое понимание "куда я попал" :)
Ах да, еще include...давайте уже include_once или require_once, что будет правильнее, вы же проверяете на существование файла :)
Полностью динамическое задание path у вас не получится, у PHP с этим огромные косяки, которые никто не думает править, в любом случае вам придется либо один раз жестко дефайнить, либо постоянно держать директорию проекта в include_path.
К тому же планирую чуть позже совсем уйти из php.
Однако, безусловно, есть люди, которые "пиарят", а есть люди, которые этот пиар заказывают. Потом вступает в силу момент "перформанса", когда дядя покупает десятые проценты акций компании, тем самым подымая цену до небес (хотя умный человек сразу поймет, что дядя денег не много потратил, а резонанс большой, тут подвох), потом на сцену выходят главные действующие лица - "дойные коровы", т.е. дурачки, которые отдают миллиарды за более ощутимые доли в компании, компания взлетает до небес. Тут появляются клоны "заказчиков пиара", естественно, более мелкие, естественно для более мелких кампании, и так по нисходящей.
А задают тон те же ИТшники, которые провозгласили "невероятную ценность информации, человеческих отношений и всего остального, что нематериально", за ними последовали другие :)
Все это рухнет, если так будет продолжаться, как с рынком недвижимости в США, только в несколько раз сильнее..
А Singleton нужен в случае, когда вам нужен exactly one instance of your class :) Причем экземпляр создается, сам по себе класс несет нагрузку объекта...А Registry в данном случае - нет.
А еще я хотел иметь аналог mysql_last_id(), т.к. в PEAR::DB этого ПОЧЕМУ-ТО нет :) Зато там есть некие sequences, которые вместо возврата LAST_INSERT_ID позволяют создавать последовательности вставок, где будет храниться LAST_INSERT_ID, короче там вместо 1 функции приходится использовать 3 с мудреной логикой, причем для каждой sequence создается еще и своя таблица в бд...с ума сойти :)
А извиняться вам не за что, все мы учимся :)
Решил, что больше PEAR штуки в проектах постараюсь не использовать :)
в PHP4 нет ни public, ни static в данном контексте. А что вы подразумеваете под "неполноценными" и "полноценными" классами мне не понятно...
Есть такой шаблон - Singletone, это и есть его реализация.
Если вы используете PHP5 и пишете, что все ТОЛЬКО для PHP5, будьте добры использовать exceptions, а не die :) И область видимости методов отмечайте, статичность и т.п. :)
$site_path можно было define('ROOT_PATH', '/var/www/localhost/htdocs'), вместо переменной, DIRSEP как-то не смотрится по сравнению с DIRECTORY_SEPARATOR, последнее хоть и длиннее, но дает четкое понимание "куда я попал" :)
Ах да, еще include...давайте уже include_once или require_once, что будет правильнее, вы же проверяете на существование файла :)
В общем все, в принципе понравилось :)
А вообще флаг вам в руки, убирайте сингтон и делайте как хотите.
$ob = SignetoneClass::getInstance();
public static function getInstance() {
if(!is_object(self::$_instance)) {
$c = __CLASS__;
self::$_instance = new $c;
return self::$_instance;
} else {
return self::$_instance;
}
}
И никаких объектов.
Как-то так :)
Интересно, как появилась эта идея у самих LG :)
А так - ну ОЧЕНЬ хорошая вещь :)