__autoload() 是否放在主类中?

发布于 2024-10-14 13:29:40 字数 576 浏览 10 评论 0原文

我是新来的,如果这是一个邪恶的菜鸟问题,我很抱歉。

JMC 是我的主课。其他类的命名类似于 JMC_filesJMC_array。我想使用自动加载。自动加载函数是在我的主类的内部还是外部?因此,对于视觉效果,我应该这样做:

class JMC {
    function __autoload($className) {
        include_once($className.'.php');
    }
    protected function foo() { }
}

class JMC_files extends JMC (){
}

还是这样:

function __autoload($className) {
    include_once($className.'.php');
}

class JMC {
    protected function foo() { }
}

class JMC_files extends JMC (){
}

I'm new to classes, so sorry if this is a wicked noob question.

JMC is my main class. Other classes are named like JMC_files or JMC_array. I want to use autoload. Does the autoload function go inside my main class or outside of it? So for a visual, should I do this:

class JMC {
    function __autoload($className) {
        include_once($className.'.php');
    }
    protected function foo() { }
}

class JMC_files extends JMC (){
}

or this:

function __autoload($className) {
    include_once($className.'.php');
}

class JMC {
    protected function foo() { }
}

class JMC_files extends JMC (){
}

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

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

发布评论

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

评论(1

小…楫夜泊 2024-10-21 13:29:40

__autoload() 是一个名称当您尝试引用用户空间中尚不存在的类时,默认情况下会自动调用魔术函数。它是一个函数,而不是一个类方法,因此您可以这样定义它:

function __autoload($className) {
    include_once($className.'.php');
}

如果您愿意,您可以使用 spl_autoload_register()。例如,如果您想为主 JMC 类提供一个处理类文件自动加载的静态 autoload() 方法,您可以执行如下操作

class JMC {
    public static function autoload($className) {
        include_once($className.'.php');
    }

    protected function foo() {}
}

spl_autoload_register('JMC::autoload');

// By referencing this class, if it doesn't yet exist then JMC's autoload()
// gets called and PHP will attempt to load JMC_files.php to look for this class
$files = new JMC_files();
$files->foo();

:你的自动加载功能取决于你。您的主 JMC 类听起来是一个合理的位置;我的框架的自动加载方法也位于主类中。

__autoload() is the name of a magic function that is automatically called by default when you attempt to reference a class that doesn't yet exist in userland. It's a function, not a class method, so you define it like this:

function __autoload($className) {
    include_once($className.'.php');
}

If you like, you may set your own autoload handler (can be a function or a class method) instead, by using spl_autoload_register(). For example, if you want to give your main JMC class a static autoload() method that handles autoloading of class files, you would do something like this:

class JMC {
    public static function autoload($className) {
        include_once($className.'.php');
    }

    protected function foo() {}
}

spl_autoload_register('JMC::autoload');

// By referencing this class, if it doesn't yet exist then JMC's autoload()
// gets called and PHP will attempt to load JMC_files.php to look for this class
$files = new JMC_files();
$files->foo();

Where you want to place your autoload function depends on you. Your main JMC class sounds like a reasonable place for it; my framework's autoload method lives in the main class too.

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