较旧的PHP版本修复

tma*_*314 5 php

试图动态加载一个类:

    require_once(PATH_MODULES."/{$module}/{$module}_admin.php");        
    $admin_class = $module."Admin";     
    return $admin_class::get_admin($module);
Run Code Online (Sandbox Code Playgroud)

在旧版本的PHP上产生此错误:

Parse error: syntax error, unexpected
T_PAAMAYIM_NEKUDOTAYIM in 
/home/user/public_html/folder/path/admin/filename.php on line 91 
Run Code Online (Sandbox Code Playgroud)

如何更改此代码以适用于旧版本的PHP?

Nan*_*nne 5

您可能期望的问题是,您不能在PHP <5.3中使用动态类名.这就是::变量之后出乎意料的原因.

我认为没有办法解决这个问题.你不允许这样做:

 $admin_class::get_admin($module);
Run Code Online (Sandbox Code Playgroud)

如果这部分总是一样的:

$admin_class = $module."Admin";     
return $admin_class::get_admin($module);
Run Code Online (Sandbox Code Playgroud)

你可以(而且这是一个黑客!)将这些字符串添加到该模块,其中模块名称填充在课程中.或者为此单独制作一个文件?

因此,对于模块,"yourModule"您可以在"/yourModule/yourModule_admin.php"文件中添加以下行:

$admin_class = "yourModuleAdmin";     
return yourModuleAdmin::get_admin($module);
Run Code Online (Sandbox Code Playgroud)

或者添加一个名为yourModule_admin.olderversions.php的单独文件

不太好,我同意.


tma*_*314 2

答案很简单:

    $admin_class = $module."Admin";

    $oAdmin = new $admin_class;

    return $oAdmin->get_admin($module);
Run Code Online (Sandbox Code Playgroud)

  • 您所做的与您在问题中所做的并不相同。在这里您调用一个对象方法,在您的问题中您调用一个(静态)类方法。 (2认同)