ФорумПрограммированиеPHP для идиотов → Как узнать автоматом файл потомка методом предка?

Как узнать автоматом файл потомка методом предка?

  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 4 августа 2010 г. 18:28

    Как узнать автоматом файл потомка методом предка?
    Фор экзампл.
    Есть класс
    abstract class Foo_Abstract {

    private $_path;

    public function __construct()
    {
    $this->_path = $this->getPath();

    public function getPath()
    {
    //вот тут надо что то написать
    }
    }
    //чтобы потому в
    class Fookalka extends Foo_Abstract {



    public function someFunction()
    {
    echo $this->_path; //тут надо что бы уже был путь к файлу Fookalka
    }
    }

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

  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 4 августа 2010 г. 18:42, спустя 14 минут

    и тут я такой говорю: - Что профи, обосрались?
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 августа 2010 г. 18:54, спустя 12 минут 25 секунд

    Я не крутой программист, но если нет нормальных способов, то может в автолоде передавать путь?
    Хотя я бы сначала погуглил)
    adw/0
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 4 августа 2010 г. 19:04, спустя 9 минут 58 секунд

    то может в автолоде передавать путь?

    может, но куда передавать то? ))
    Хотя я бы сначала погуглил)

    ты последнее время всегда меня в гугл посылаешь.. ((
    да я уже весь изучил…
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 4 августа 2010 г. 19:36, спустя 31 минуту 49 секунд

    не, я говорю что я бы сам погуглил) типа я не в теме…
    adw/0
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 4 августа 2010 г. 23:09, спустя 3 часа 33 минуты 31 секунду


    может, но куда передавать то? ))

    в статическое свойство класса
    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 4 августа 2010 г. 23:17, спустя 7 минут 10 секунд

    если в системе есть автолоадер, можно подойти с другого конца. задача сводится к

    class Loader
    {
    // вычисляем путь до класса
    public static function classPath($className)
    {
    // …
    return $path;
    }

    public static function handleClass($className)
    {
    include self::classPath($className);
    }
    }

    // вот он автолоадер
    spl_autoload_register(array('Loader', 'handleClass'));

    class Foo_Abstract
    {
    //…
    public function echoPath()
    {
    // всего-то надо вычислить имя класса ЭТОГО объекта
    // будет правильно работать во всех потомках
    echo Loader::classPath($this->get_class());
    }
    }

    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 1:17, спустя 2 часа 47 секунд

    get_included_files можно заюзать на поиск имени класса в них :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 3:14, спустя 1 час 56 минут 11 секунд

    что дебаг бектрейс говорит?
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 4:26, спустя 1 час 12 минут 17 секунд

    Да вы крутые проффи!
    А помогите мне еще выбрать вариант. Первые два подразумевают помощь классу в определении его места положения.
    В принципе можно тогда и в конструктор передавать. Вторые два могу дать классу самостоятельность.
    Но это будет мнимая самостоятельность, так как передача в объект пути его класса даёт возможность клиенту "обмануть" объект.
    Короче всем спасибо. ))
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 6:07, спустя 1 час 41 минуту 26 секунд

    идея просто у тебя ебанутая, отсюда и проблемы :)
    Сапожник без сапог
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 6:12, спустя 4 минуты 17 секунд

    Sailor Dude, вполне вероятно, ибо проблемы чаще всего именно у таких идей… Идея в том что есть приложение, которое запускается запускателем приложений. Тобишь запускатель приложению передаёт путь к приложению или приложение определяет путь само. Путь нужен для установки рутт пача приложения. Вот така фигня.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 6:15, спустя 3 минуты 57 секунд

    kostyl, ответ простой - надо чтобы приложение внутри делало чтото аля parent::setDocumentRoot()

    либо не использовать автолоадер (ага, ахуел, ага?)), хоть он и наше все, но по хорошему в запускаторе ТЫ ДОЛЖЕН УЗНАТЬ ПУТЬ, ЗАПОМНИТЬ ЕГО И РЕКВАЙРНУТЬ СОЗДАВАЯ ИНСТАНЦИИ. во как я тебя обосрал, а то на профи тут гонишь школря ебаный :D
    Сапожник без сапог
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 6:19, спустя 3 минуты 39 секунд

    Sailor Dude, чувак, ты гений, я так и собирался сейчас сделать ;))
    Спустя 91 сек.
    имею в виду в запускаторе отдать путь в кончтруктор…
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 8:13, спустя 1 час 54 минуты 20 секунд

    блин, я все чаще замечаю, что делаю как в зенде, капец, аж страшно, может он идеален??

Пожалуйста, авторизуйтесь, чтобы написать комментарий!