我的网站非常大,我不使用 PHP 类,我对 OO 的理解还不够好,无法重写我的网站以使用它们,但我真的很想使用
__autoload($class_name) 类使用的特性。我非常依赖函数,我有不同的函数文件,
forums.inc.php
blogs.inc.php
用户.inc.php
photos.inc.php
通用公司.php
所有这些文件只是网站特定部分的特定功能,除了 general.inc.php 将具有需要在所有页面上出现的功能。
现在我是否可以使用自动加载或制作类似的东西来加载这些函数文件?我曾经考虑过基于 URL 来做这件事,比如如果 URL 中有论坛这个词,我会加载论坛功能文件,但这并不总是有效,因为与论坛相关的文件在 URL 中没有论坛这个词.
在我学会编写足够好的 OO 代码以将我的所有功能放入类之前,我是否几乎别无选择?
//example of the autoload
function __autoload($class_name){
include('classes/' . $class_name . '.class.php');
}
$time = new time();
$time->fn1();
最佳答案
老实说,我不认为你能以直接的方式做到这一点。无论如何,使用实用程序类不是更好吗? OOP 没有什么,看看这个:
<?php
class HTMLUtil {
public static function filter($str) {...}
public static function entities($str) {...}
public static function encode($str) {...}
...etc...
}
?>
将相关功能组合在一起的静态帮助器/实用程序类很容易组合在一起,只需将您的函数声明为 static
:
Declaring class members or methods as static makes them accessible without needing an instantiation of the class.
现在您可以使用__autoload
。您不必实例化这些类即可使用它们的任何静态函数,并且它使您的代码更具可读性(如果稍微冗长的话)。我总是觉得做这样的事情更令人满意:
echo HTMLUtil::filter($str);
代替:
echo filter($str); //scary filter function, where are you from?
如果需要,您还可以在实用程序类中声明一个私有(private)构造函数以防止它们被实例化,以强调它们“只是一堆相关的函数”:
private __construct() {...}
要从同一类中的另一个函数调用静态函数,您可以使用 self
关键字(它引用相同的 class,而不是 object 或 类实例):
public static function foo()
{
echo self::bar() . '..and some foo';
}
关于php - 我可以在 PHP 中自动加载没有类的函数文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391562/