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

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

  • kostyl

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

    Spritz Авг. 5, 2010, 2: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

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

    Spritz Авг. 5, 2010, 2:42 д.п., спустя 14 минут

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

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

    Spritz Авг. 5, 2010, 2:54 д.п., спустя 12 минут 25 секунд

    Я не крутой программист, но если нет нормальных способов, то может в автолоде передавать путь?
    Хотя я бы сначала погуглил)
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • kostyl

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

    Spritz Авг. 5, 2010, 3:04 д.п., спустя 9 минут 58 секунд

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

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

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

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

    Spritz Авг. 5, 2010, 3:36 д.п., спустя 31 минуту 49 секунд

    не, я говорю что я бы сам погуглил) типа я не в теме…
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • artoodetoo

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

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


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

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

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

    Spritz Авг. 5, 2010, 7: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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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