Как узнать месторасположение класса потомки из родителя?

akxxiv

Новичок
Как узнать месторасположение класса потомки из родителя?

Есть два класса
Class_1 и Class_2. Class_2 наследуется от первого. Файлы этих классов лежат в разных директориях. Нужно в классе Class_1 реализовать метод getPath, который будет доступен для всех потомков и отдавать он будет путь до класса потомка. Пока вижу два способа
1. Переопределять данный метод в потомках что-то типа того:
PHP:
function getPath()[
{
       return dirname(__FILE__);
}
/PHP] 
2. __FILE__ передавать в параметре   $this->getPath(__FILE__);

А вот можно как-то избавится от __FILE__ в параметре? Чтобы вызвать $this->getPath() и все, а в родительском классе, где определен это метод, определить файл класса, из которого был вызван метод и отдать его путь?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Мей-би
[m]debug_backtrace[/m]
?
 

akxxiv

Новичок
Mr_Max
Может быть...
crocodile2u
Возможно все вместе...

-~{}~ 05.06.08 13:17:

Соорудил тут на скорую руку. Не знаю честно говоря правильно ли это. Возможно есть более правильный вариант, но все же работает вроде...
PHP:
class class_1{

	function getPath()
	{
		$className = $this->className();
		$cl = new ReflectionClass($className);
		$path = $cl->getFileName();
		return $path;
	}

	function className(){
		$arr = debug_backtrace();
		$parent = $arr[0]["object"];
		$className = get_class($parent);
		return $className;
	}
}
 

kode

never knows best
PHP:
class class_1{

	function getPath(){
		$cl = new ReflectionClass(get_class($this));
		return $cl->getFileName();
	}

}
небольшой рефакторинг
 

StUV

Rotaredom
akxxiv
действительно, а зачем ?..
(сорри за офф, но реально интересно ;))
 

akxxiv

Новичок
StUV
Есть Класс Module - Родитель для всех модулей системы.
Модули хранятся в папке /modules/Имя_Модуля/classes/module.php
Так же в папке /modules/Имя_Модуля/files/ есть файлы, необходимые для работы модуля - js, css, img
Так вот из модуле подключаются эти файлы путем
$this->AddJS("jquery.js", "catalog.js");
$this->AddCss("catalog.css");

Эти методы определены в родительском классе Module, они определяют путь до раздела модуля и подключают эти файлы...

Собственно для этого и нужно...

-~{}~ 05.06.08 13:42:

Автор оригинала: kode
PHP:
class class_1{

	function getPath(){
		$cl = new ReflectionClass(get_class($this));
		return $cl->getFileName();
	}

}
небольшой рефакторинг
Замечание к рефакторингу...
Думаю, метод getClass мог бы еще пригодиться и для других целей..
 

kode

never knows best
Автор оригинала: akxxiv
Замечание к рефакторингу...
Думаю, метод getClass мог бы еще пригодиться и для других целей..
getClass() имеете ввиду className() ?

Каким-же интересно способом? есть get_class() который полностью отметает потребность в этом методе
 
Сверху