PHP 4 - неопределенное имя класса - PullRequest
1 голос
/ 06 февраля 2011

В PHP 4, если вы используете класс до его определения, вы получите эту ошибку:

Неустранимая ошибка: неопределенное имя класса 'foo' в ...

Мой код:

function do_stuff(){
  if(foo::what()) ... // this code is before the php file with the foo class is included    
}

class foo{
  function what(){
  ...
  }
}

do_stuff();

есть ли обходной путь для этого (помимо сообщения людям, которые используют ваш скрипт для обновления до php5)?

Ответы [ 3 ]

1 голос
/ 06 февраля 2011

Вместо этого вы можете использовать:

call_user_func(array('foo', 'what'));

, что приведет к проверке класса / метода во время выполнения, а не во время компиляции.

1 голос
/ 06 февраля 2011

если php4, вы можете проверить существование класса с помощью class_exists. Чтобы быть совместимым с php5, вы можете написать такой код:

<?php
function __autoload($classname) {
    include("classes/$classname.class.php");   
}

if (!class_exists('foo')) __autoload('foo');
1 голос
/ 06 февраля 2011

Определите ваши классы в файле, который require_once() d в начале вашего скрипта.

...