ФорумПрограммированиеPHP для идиотовPHP и ООП → Наследование

Наследование

  • sinner

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 12 апреля 2010 г. 2:41

    Доброго времени суток, уважаемые

    Столкнулся с такой проблемой и прошу помощи:

    Есть некий класс:

    class X
    {
    public static function loadPart($partName){…}
    }


    … и его некоторый наследник

    class Y
    {
    public static function doSomething()
    {

    self::loadPart("");
    }
    }


    где loadPart соответственно должна загружать некоторые файлы с классами, лежащие в одной папке с классом наследником.

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

    Прошу совета, как выйти из этой ситуации?
  • phpdude

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

    Spritz 12 апреля 2010 г. 2:49, спустя 8 минут 4 секунды

    сделай параметром ей $filename

    ну и вызывай

    self::loadPart(__FILE__);

    если я правильно понял твою ошибку :)

    зы: x и y у тебя не связаны :)
    Сапожник без сапог
  • NRG

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

    Spritz 12 апреля 2010 г. 2:53, спустя 3 минуты 43 секунды

    сделай один класс который занимается подгрузкой других классов, и чтобы он был доступен везде
  • sinner

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 12 апреля 2010 г. 2:57, спустя 4 минуты 12 секунд



    зы: x и y у тебя не связаны :)


    Да, прозевал, прошу прощения.

    С передачей имени файла мысль была, но хотелось обойтись как-то изящнее…

    Спасибо


    сделай один класс который занимается подгрузкой других классов, и чтобы он был доступен везде

    да они и так везде доступны, они статические. Проблема в том, что все наследники лежат в разных папках, и хотелось бы чтобы они сами умели свои части грузить
  • phpdude

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

    Spritz 12 апреля 2010 г. 3:00, спустя 2 минуты 24 секунды




    зы: x и y у тебя не связаны :)


    Да, прозевал, прошу прощения.

    С передачей имени файла мысль была, но хотелось обойтись как-то изящнее…

    Спасибо


    сделай один класс который занимается подгрузкой других классов, и чтобы он был доступен везде

    да они и так везде доступны, они статические. Проблема в том, что все наследники лежат в разных папках, и хотелось бы чтобы они сами умели свои части грузить

    можешь через debug_backtrace :)

    найти вызывателя функции и пут ьк файлу
    Сапожник без сапог
  • Ewg777

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

    Spritz 12 апреля 2010 г. 3:03, спустя 2 минуты 50 секунд

    Можешь попробовать Зендовский вариант названий: Zend_Cache_Backend_Xcache и автолоадер будет лишь заменять _ на / (т.е. будет запрошен Zend/Cache/Backend/Xcache.php)
  • Абырвалг

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

    Spritz 12 апреля 2010 г. 3:11, спустя 8 минут 20 секунд

    не совсем понял, а для чего это? Используй нотацию PEAR как выше порекомендовал Ewg777 и пусть классы грузятся через __autoload (spl_autoload_register)

    также есть ф-ция get_called_class (PHP >= 5.3.0, или эмуляция через debug_backtrace)
    Спустя 79 сек.
    http://code.google.com/p/bicycle-libraries/source/browse/src/core/functions.php 69 строка
  • OleKsa

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 12:21, спустя 859 дней 9 часов 9 минут

    какая то ты странная!!!!!!!!!!!!!!!!!!!!!!!!!

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