Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在PHP中自动加载没有类的函数文件吗?_Php_Class_Autoload - Fatal编程技术网

我可以在PHP中自动加载没有类的函数文件吗?

我可以在PHP中自动加载没有类的函数文件吗?,php,class,autoload,Php,Class,Autoload,我的网站相当大,我不使用PHP类,我还不了解OO,还没有重新编写我的网站来使用它们,但是我真的很想使用 __类使用的自动加载($class_name)功能。我非常依赖函数,我有不同的函数文件, forums.inc.php blogs.inc.php user.inc.php photos.inc.php 通用公司 所有这些文件都只是特定于站点某个部分的函数,除了general.inc.php的函数需要在任何页面上 现在,我是否可以使用自动加载或制作类似的东西来加载这些函数文件?我曾经考虑过基于

我的网站相当大,我不使用PHP类,我还不了解OO,还没有重新编写我的网站来使用它们,但是我真的很想使用 __类使用的自动加载($class_name)功能。我非常依赖函数,我有不同的函数文件,
forums.inc.php
blogs.inc.php
user.inc.php
photos.inc.php
通用公司

所有这些文件都只是特定于站点某个部分的函数,除了general.inc.php的函数需要在任何页面上

现在,我是否可以使用自动加载或制作类似的东西来加载这些函数文件?我曾经考虑过基于URL来做这件事,比如如果URL中有单词forums,我会加载论坛功能文件,但这并不总是有效,因为与论坛相关的文件在URL中没有单词forums

在我学会编写足够好的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...
    }
?>
而不是:

echo filter($str); //scary filter function, where are you from?
如果需要,您还可以在实用程序类中声明一个私有构造函数,以防止它们被实例化,从而强调它们的“只是一组相关函数”:

private __construct() {...}
要从同一类中的另一个函数调用静态函数,可以使用
self
关键字(该关键字引用同一类,而不是对象或类实例):


我确实喜欢这样,我不知道我可以把它们“包装”成一个类,虽然我不知道如何称呼它们,因此,我可以像现在一样使用函数,只需包括它所在的类名和::在类和函数名之间?2)封装在1个类中的函数也可以从任何页面调用,但也可以在另一个类中的另一个函数中调用?像现在一样,我的许多函数都使用其中的其他函数,所以如果从用户类调用DB类中的函数,那么它仍然可以工作吗?谢谢你的邀请help@jasondavis是的,SomeClass::functionName($param)是调用静态函数的方式。private _construct(){…}我对这一部分有点困惑,“为了防止它们被实例化”这意味着什么?@jasondavis-它意味着$var=new YourClass;将不起作用,因为该类不是要实例化的。“private”访问修饰符阻止构造类。
private __construct() {...}
public static function foo()
{
    echo self::bar() . '..and some foo';
}