Ну или $this->_classes заменить на массив. Ну вообщем задумка такая чтобы все классы, которые находятся в каталоге классов автоматически подключались при старте
скрипта. При использовании вышенаписанного происходит перепонение буфера.... Может кто поделится идеей?
Использую
php 5.3 т.к. хост на него будет скоро переходить всё равно.
Дополнение: core - базовый класс, а core() -
функция для выполнения при объявлении объекта.
Сильно не пинайте, ООП начал использовать очень недавно
.
Спустя 47 минут, 23 секунды (31.10.2009 - 16:19) glock18 написал(а):
Ka4_0k
ммм... к чему подключать сразу все классы?
пхп 5.3 прекрасная штука, но даже меньшие версии позволяют назначить свою функцию (метод класса или объекта) для автоматической загрузки классов. при этом загружаться они будут только по мере обращения к ним.
Спустя 17 минут, 23 секунды (31.10.2009 - 16:36) Ka4_0k написал(а):
Ну вообщем как я делал. В начале index.php
PHP |
require_once("classes/core.php"); $main = new core; //и вот при этом в $main->_classes должен быть объект или массив. |
Классы хотел подключить при объявлении объекта main, чтобы они автоматом вписались в элемент _classes.
Цитата |
пхп 5.3 прекрасная штука, но даже меньшие версии позволяют назначить свою функцию (метод класса или объекта) для автоматической загрузки классов. при этом загружаться они будут только по мере обращения к ним. |
Это как? require и include теперь для классов не нужны?
Спустя 52 минуты, 12 секунд (31.10.2009 - 17:28) WildeR написал(а):
Цитата (Ka4_0k @ 31.10.2009 - 13:36) |
Это как? require и include теперь для классов не нужны? |
function __autoload тебе нужна для автоматического подключения классов. В ней уже будешь делать инклуд нужного файла.
Спустя 2 минуты, 55 секунд (31.10.2009 - 17:31) Ka4_0k написал(а):
Цитата (WildeR @ 31.10.2009 - 14:28) |
Цитата (Ka4_0k @ 31.10.2009 - 13:36) | Это как? require и include теперь для классов не нужны? |
function __autoload тебе нужна для автоматического подключения классов. В ней уже будешь делать инклуд нужного файла.
|
Нет, немного не то
,мне нужно чтобы классы автоматом подхватились из папки. Тоесть динамическая подгрузка.
Спустя 7 минут, 45 секунд (31.10.2009 - 17:39) WildeR написал(а):
Цитата (Ka4_0k @ 31.10.2009 - 14:31) |
Цитата (WildeR @ 31.10.2009 - 14:28) | Цитата (Ka4_0k @ 31.10.2009 - 13:36) | Это как? require и include теперь для классов не нужны? |
function __autoload тебе нужна для автоматического подключения классов. В ней уже будешь делать инклуд нужного файла.
|
Нет, немного не то ,мне нужно чтобы классы автоматом подхватились из папки. Тоесть динамическая подгрузка. |
Что ты понимаешь под динамической подгрузкой?
function __autoload как раз выполняется, когда в коде встречается необъявленный класс.
Можно вот так написать эту функцию например:
PHP |
function __autoload($class_name) { $filename = strtolower($class_name) . '.php'; $file = site_path . DIRSEP .'www'. DIRSEP . 'blocks' . DIRSEP .'classes' . DIRSEP . $filename; if (file_exists($file) == false) { return false; } include ($file); } |
Спустя 2 минуты, 26 секунд (31.10.2009 - 17:41) Ka4_0k написал(а):
Так вот мне какраз и надо чтобы не использовать подобные вещи:) Я же выше написал
Цитата |
Классы хотел подключить при объявлении объекта main, чтобы они автоматом вписались в элемент _classes. |
Тоесть не требуется никаких вызовов. Подключаются все классы которые находятся в каталоге классов и при этом все заносятся либо в подобъект объекта main или в массив в объекте main=).
Стоп. Вот это без её вызова?
Цитата |
function __autoload как раз выполняется, когда в коде встречается необъявленный класс. |
Спустя 7 минут, 52 секунды (31.10.2009 - 17:49) WildeR написал(а):
Цитата (Ka4_0k @ 31.10.2009 - 14:41) |
Стоп. Вот это без её вызова? |
Объявляешь эту функцию в скрипте и классы при обращении к ним будут загружаться автоматически без "ручного" вызова самой этой функции.
То есть при обнаружении необъявленного класса php сам вызовет функцию __autoload.
Спустя 6 минут, 46 секунд (31.10.2009 - 17:56) Ka4_0k написал(а):
Спасибо большое! =) А если она будет находится сам в классе core ? Тоесть класс core я подключу вручную, а функцию эту объявлю в нём, такое прокатит?
Спустя 3 минуты, 56 секунд (31.10.2009 - 18:00) WildeR написал(а):
Цитата (Ka4_0k @ 31.10.2009 - 14:56) |
Спасибо большое! =) А если она будет находится сам в классе core ? Тоесть класс core я подключу вручную, а функцию эту объявлю в нём, такое прокатит? |
Думаю такое не прокатит:)ее надо "внеклассово" объявить.
Спустя 2 минуты, 4 секунды (31.10.2009 - 18:02) Ka4_0k написал(а):
Ладно, спасибо
Попробовал -
работает, буду юзать.
Весёлая штука)
_____________
-Oh My God! They Killed Kenny!
-You Bastards!