LINUX.ORG.RU

[php] Вызов функции из функции. Проблема

 


0

1

Допустим, файлы располагаюся следующим образом:

  • index.php
  • funct.php
  • class.php

1. Содержание файла index.php:

include "funct.php";
DoSmth();
DoSmth();

2. funct.php
require_once "class.php";
function DoSmth()
{
	$do->get_it();
}

3. class.php
class new_class
{
	function get_it()
	{
		echo "Ok!";
	}
}
$do = new new_class;

При вызове файла index.php выдается ошибка:

Fatal error: Call to a member function get_it() on a non-object in funct.php on line 7

В чем проблема и как лечить?


проблема в области видимости. Ознакомься с соответствующим разделом мануала

require_once "class.php";
function DoSmth()
{
   global $do;
   $do->get_it();
}
nu11 ★★★★★
()
function DoSmth()
{
   $do->get_it();
}

Никогда не пиши так. И, вообще, по возможности избегай использования глобальных переменных. И обязательно включай E_NOTICE. В этом месте сразу получишь замечание об использовании неинициированной переменной.

KRoN73 ★★★★★
()

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

$do = new new_class()

stevejobs ★★★★☆
()
Ответ на: комментарий от KRoN73

И обязательно включай E_NOTICE

почему бы сразу не включить E_STRICT?

stevejobs ★★★★☆
()
Ответ на: комментарий от anonymous

> Для того, что у ТС-а, лучше подходит static method.

Учитывая название метода (get_*) смею предположить, что static тут все же не подойдет.

rival ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.