PHP 4 - 未定义的类名

发布于 2024-10-15 20:41:11 字数 350 浏览 7 评论 0原文

在 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)?

In PHP 4, if you use a class before it's defined you get this error:

Fatal error: Undefined class name
'foo' in...

My code is:

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();

is there any workaround for this (besides telling the people who use your script to update to php5) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

痴情换悲伤 2024-10-22 20:41:11

您可以改为使用:

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

这将导致在运行时而不是编译时检查类/方法。

You could instead use:

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

which would cause the class/method to be checked at runtime rather than compile time.

甲如呢乙后呢 2024-10-22 20:41:11

在脚本开头的 require_once()d 文件中定义您的类。

Define your classes in a file which is require_once()d at the start of your script.

最舍不得你 2024-10-22 20:41:11

如果是 php4,您可以使用 class_exists< 来测试类的存在/代码>。所以为了兼容php5,可以写这样的代码:

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

if (!class_exists('foo')) __autoload('foo');

if php4, you can test the existence of a class with class_exists. So to be compatible with php5, you can write this type of code :

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

if (!class_exists('foo')) __autoload('foo');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文