[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка классов
mazahakax
Начал изучать ООП PHP. Начал писать загрузку классов чтобы их можно было вызывать в других скриптах примерно так:


$core->load_class('database');

А потом использовать загруженный класс таким способом:

$core->database->some_method();

или хотя бы так:

$database->some_method();


написал такой вот класс:

class core {

function load_class($classname) { //метод загрузки классов
if (!(class_exists($classname))) { //если класс ещё не объявлен, то объявляем его...
$exists = file_exists('core/'. $classname . '.php');
if (file_exists('core/' . $classname . '.php')) { //проверка файла на наличие
require_once ('core/' . $classname . ".php"); //если существует, то включаем
}else{
echo "Ошибка открытия класса: {$classname}! Возможно файл не сущестует.";// если нету, то выводит ошибку
die();
}
}
}


Только из-за моей неопытности он не работает, точнее я не могу додумать, что здесь надо сделать, чтобы он работал как нужно.
Заранее благодарен.
P.S. Я только учусь...




Спустя 5 минут, 48 секунд (4.06.2011 - 17:30) Гость_lekafe написал(а):
прочитай про __call, __get, __set. Также после инклюда файла создай экземпляр объекта этого класса и сохрани его или в приватный массив или в объект, а потом через __get вытащи .

Спустя 16 минут, 21 секунда (4.06.2011 - 17:46) mazahakax написал(а):
Цитата
Также после инклюда файла создай экземпляр объекта этого класса и сохрани его или в приватный массив или в объект

Можно по подробней?

Как работает __set, __get немного разобрался.

Спустя 8 минут, 48 секунд (4.06.2011 - 17:55) Гость_lekafe написал(а):
к примеру есть у тебя фаил db.class.php в нем хранится типа класс db. ну так вот когда ты заинклюдил его то ты должен примерно так сделать $this->objects[$className] = new $className; где $this->objects это свойство класса которое должно быть объявлено как private и иметь тип array.

Спустя 12 минут, 23 секунды (4.06.2011 - 18:07) mazahakax написал(а):
Спасибо! С этим разобрался, а как теперь сделать так, чтобы его можно было бы вызвать в другом скрипте. Т.е. в Index.php

например скрипт вызова классов у меня находится в файле
core/core.php

function load_class($classname) { //класс загрузки классов
if (!(class_exists($classname))) { //если класс ещё не объявлен, то объявляем его...
$exists = file_exists('core/'. $classname . '.php');
if (file_exists('core/' . $classname . '.php')) { //проверка файла на наличие
require_once ('core/' . $classname . ".php"); //если существует, то включаем
$this->objects[$classname] = new $classname;

index.php



include_once 'core/core.php'; //подгружаем ядро

$core = new core;

$core->load_class('database'); //загружаем класс


Быстрый ответ:

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