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

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

  • progs

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

    Spritz Апрель 22, 2010, 1:28 д.п.

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

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

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

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

    Spritz Апрель 22, 2010, 1:43 д.п., спустя 14 минут 53 секунды

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


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

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

    Spritz Апрель 22, 2010, 1:44 д.п., спустя 1 минуту 19 секунд

    mb reflection api?
  • progs

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

    Spritz Апрель 22, 2010, 1:49 д.п., спустя 5 минут 8 секунд



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

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

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

    Spritz Апрель 22, 2010, 1:51 д.п., спустя 1 минуту 53 секунды




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

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

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

    Spritz Апрель 22, 2010, 1:52 д.п., спустя 1 минуту 3 секунды





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

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

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

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

    Spritz Апрель 22, 2010, 2: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 Апрель 22, 2010, 2:05 д.п., спустя 3 минуты 13 секунд

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

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

    Spritz Апрель 22, 2010, 10:35 д.п., спустя 8 часов 30 минут

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

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

    Spritz Апрель 22, 2010, 10: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, 11:03 д.п., спустя 23 минуты 33 секунды

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

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

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

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

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

    Spritz Апрель 23, 2010, 7: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 Апрель 23, 2010, 9:31 д.п., спустя 2 часа 2 минуты 22 секунды

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

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