ФорумПрограммированиеPHP для идиотов → Вызов функции из другого класса

Вызов функции из другого класса

  • progs

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

    Spritz 21 апреля 2010 г. 14:28

    Есть 2 класса, независимые друг от друга, при вызове функции имеющейся в одном из классов вылетает ошибка:

    Fatal error: Call to a member function …() on a non-object in…

    данная ошибка возникает из-за того, что функция класса использует переменную, которая определена в этом классе выше, но не задействована. Подскажите, как вызвать требуемую функцию из нужного класса? Спасибо
  • NRG

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

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

    как вызвать требуемую функцию из нужного класса?


    <?php
       myClass::myMethod();
       // или так
       $c = new myClass;
       $c->myMethod();
    //но, эта принципиально две разные вещи
  • mario

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

    Spritz 21 апреля 2010 г. 14:44, спустя 1 минуту 19 секунд

    mb reflection api?
  • progs

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

    Spritz 21 апреля 2010 г. 14:49, спустя 5 минут 8 секунд



    <?php
    $test=  myClass::myMethod();

    Я вызываю как раз таким способом, и возникает ошибка
  • mario

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

    Spritz 21 апреля 2010 г. 14:51, спустя 1 минуту 53 секунды




    <?php
    $test=  myClass::myMethod();

    Я вызываю как раз таким способом, и возникает ошибка
    а функция или класс статический?
    Спустя 47 сек.
    или это не обязательно, что бы вызывать таким способом?
  • progs

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

    Spritz 21 апреля 2010 г. 14:52, спустя 1 минуту 3 секунды





    <?php
    $test=  myClass::myMethod();

    Я вызываю как раз таким способом, и возникает ошибка
    а функция или класс статический?
    Спустя 47 сек.
    или это не обязательно, что бы вызывать таким способом?

    Просто объявлены как class и function
  • mario

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

    Spritz 21 апреля 2010 г. 15:01, спустя 9 минут 12 секунд

    progs, ну насколько я понимаю и знаю, то вот такой вид вызова (myClass::myMethod()) относится к статическим функциям или классам…
    Спустя 274 сек.
    http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php
    да я прав…
    Спустя 59 сек.



    <?php
    $test=  myClass::myMethod();

    Я вызываю как раз таким способом, и возникает ошибка
    попробуйте
    $test= new  myClass;
    $test->myMethod();
  • Абырвалг

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

    Spritz 21 апреля 2010 г. 15:05, спустя 3 минуты 13 секунд

    если метод нестатический, но вызывается через :: - будет сгенерирован нотайс, но уж никак не фаталл эррор
  • adw0rd

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

    Spritz 21 апреля 2010 г. 23:35, спустя 8 часов 30 минут

    progs, покажите ваши классы
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Nyaah

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

    Spritz 21 апреля 2010 г. 23:39, спустя 4 минуты 31 секунду

    Fatal error: Call to a member function …() on a non-object in…
    Как бы говорит, что нельзя вызывать методы объекта, если объект не существует.
    Если вызываешь метод статически (так: Class::method()) то внутри метода $this не определён.
    Work, buy, consume, die
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 22 апреля 2010 г. 0:03, спустя 23 минуты 33 секунды

    progs, а подключение на файловом уровне для нужного класса есть?
  • Josh

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

    Spritz 22 апреля 2010 г. 1:10, спустя 1 час 7 минут 7 секунд

    Все накинулись ребус разгадывать:)
    progs, давай подсказку. Код в студию
  • progs

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

    Spritz 22 апреля 2010 г. 20:29, спустя 19 часов 19 минут 15 секунд

    есть класс

    class GoodsModelGoods
    {

    function getGreeting()
    {
    Спустя 247 сек.
    есть класс

    class GoodsModelGoods
    {
    var $id;
    var $res;
    static $pi=3.14;

    function getGreeting()
    {… }
    function category_list($id)
    {… }
    + еще несколько функций объявленных таким же образом
    }

    данный класс подключается как
    require_once( …);

    допустим при обращении таким образом к переменной echo GoodsModelGoods::$pi; результат выводиться, а вот так уже нет
    echo GoodsModelGoods::category_list($id);
  • NRG

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

    Spritz 22 апреля 2010 г. 22:31, спустя 2 часа 2 минуты 22 секунды

    progs, бестолковые какието у тебя классы.
    купи учебник по ООП

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