[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перехватить вызов
Эли4ка
Здравствуйте. Вопрос таков, есть код:

$date1 = new MySuperClass;
echo $date1->superMethod;

Возможно ли как-то перехватить имя вызываемого класса ( MySuperClass ) и сделать так, чтобы PHP вместо нее вызвал другой класс, например MyJobClass?
Чего-то пока не придумала и не нашла ничего подобного
Эли4ка
Вот так не предлагать, он не подходит. Нужно вообще не исполнять MySuperClass, а исполнить MyJobClass
// создание объекта
$bar = new MySuperClass;

// внешний вызов
echo "Its name is " , get_class($bar) , "\n";
Zzepish
Эли4ка
Дык через аутолоадер же.

P.S. Других вариантов я не знаю. Мб кто-то из ребят подскажет чего.
P.P.S такое нашел
Valick
<?php
namespace first;
class A
{
public function show()
{
header ("Content-Type: text/html; charset=utf-8");
echo "Hello, Эли4ка<br />";
}
}


namespace second;
class B
{
public function show()
{
header ("Content-Type: text/html; charset=utf-8");
echo "Hello, Valick<br />";
}
}

//namespace first; // раскомментируй
//use first\A as B; // эти строки

$cls = new B();
$cls->show();
var_dump($cls);


_____________
Стимулятор ~yoomoney - 41001303250491
Эли4ка
Увы это все не то.
1.Автолоадер

class Autoloader {
public function __construct() {
spl_autoload_register([$this, 'loader']);
}
private function loader($className) {

$file = str_replace('_', '/', $className .'.php');

if(is_readable($file)) {echo $file;
//include_once $file;

}
}
}

2. исполняемый файл
require_once('Autoload.php');
$autoloader = new Autoloader();

$cl1 = new My_class2;
echo $cl1->_j;

3. Класс
class class2 {
public $_j = "1.0.0";

}


Нужно чтобы при My_class2 не искала класс с таким именем, а вызвала class2 в папке My
Быстрый ответ:

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