Как вызвать функцию из класса php
Перейти к содержимому

Как вызвать функцию из класса php

  • автор:

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

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

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

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

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

Spritz

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

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

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

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

Spritz

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

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

Spritz

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

$test= myClass::myMethod(); 

Я вызываю как раз таким способом, и возникает ошибка
Сообщения: 6067 Репутация: N Группа: Джедаи

Spritz

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

$test= myClass::myMethod(); 

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

Spritz

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

$test= myClass::myMethod(); 

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

Просто объявлены как class и function
Сообщения: 6067 Репутация: N Группа: Джедаи

Spritz

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

progs, ну насколько я понимаю и знаю, то вот такой вид вызова (myClass::myMethod()) относится к статическим функциям или классам…

Спустя 274 сек.
Спустя 59 сек.

$test= myClass::myMethod(); 

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

$test= new myClass;
$test->myMethod();

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

Spritz

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

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

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

Spritz

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

progs, покажите ваши классы
https://smappi.org/ — платформа по созданию API на все случаи жизни
Сообщения: 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
Сообщения: 2284 Репутация: N Группа: Адекваты

Spritz

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

progs, а подключение на файловом уровне для нужного класса есть?
Сообщения: 2008 Репутация: N Группа: Кто попало

Spritz

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

Все накинулись ребус разгадывать:)
progs, давай подсказку. Код в студию
Сообщения: 59 Репутация: N Группа: Кто попало

Spritz

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

Спустя 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);

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

Spritz

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

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

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

PHP: Как вызвать функцию из класса зная ее название?

Блог доброго программиста

Используйте функцию call_user_func.
call_user_func(callback function, [mixed parameter], [mixed …])
Например:

$class = 'MyClass'; $functions = 'FunctionInMyClass'; $param1 = 1; $param2 = 'Foo'; call_user_func(array($class, $functions), $param1, $param2);

Запись опубликована в рубрике PHP, Вопрос-ответ. Добавьте в закладки постоянную ссылку.

Вызов метода одного класса внутри другого класса

Как правильно описать метод внутри другого метода одного и того же класса?
Извияюсь за возможно глупый вопрос, но ООП тема для меня новая.Вот так выглядел метод класса в.

Вызов метода из другого класса
Добрый день, умные люди! Я только начала разбираться в ООП, вот появились вопросы, а не знаю к.

Вызов нестатического метода внутри класса
Здравствуйте! Подскажите пожалуйста, как вызвать внутри класса из одной функции — другую. Вот код.

Вызов метода одного класса через другой
Необходимо вызвать метод класса ч/з другой класс. Методов класса много, сами классы тоже много.

Эксперт PHP

3834 / 3182 / 1337
Регистрация: 01.08.2012
Сообщений: 10,796

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
class gui { public function text_get(){ echo "НЛО: А шо вы тут забыли , приперлись с своими водолазами на 1км под воду, нас НЛО ни когда не видели!"; } } class guui { function kool() { gui::text_get();// тут выполнить функцию с класса gui echo "
"
; echo "

НЛО: Шас мы вас смоем

"
; } } $a = new guui; $a->kool();

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16843 / 6722 / 880
Регистрация: 12.06.2012
Сообщений: 19,967

Jodah, это будет с ошибкой, надо либо создавать объект класса gui, либо делать метод text_get статическим.

16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class gui { public function text_get(){ echo "НЛО: А шо вы тут забыли , приперлись с своими водолазами на 1км под воду, нас НЛО ни когда не видели!"; } } class guui extends gui { function kool() { $this->text_get(); // выполняеться таким образом через $this echo "
"
; echo "

НЛО: Шас мы вас смоем

"
; } }

Как правильно вызвать метод класса внутри самого класса?

Здравствуйте. Собственно тема прописана в заголовке: как правильно вызвать метод класса внутри самого класса?
Насколько я знаю, для статических методов существует self, а если надо вызвать не статический метод?
Вот, что я имею ввиду:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 class CName { public function funct1() { // реализация метода funct1 } public function funct2() { /* для статических */ self::funct1(); /* не для статических */ . } } ?>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *