`

PHP autoclass 使用

    博客分类:
  • php
 
阅读更多

为了实现自动装在类而不用每次都include等操作而制定的机制,实现起来如下:

 

final class Util{
    // 定义一个通用的装载方法
    static function autoload($class_name){
//        echo 'SPL load class:', $class_name, '<br />';
        $fullpath = $_SERVER['CONTEXT_DOCUMENT_ROOT'].'/class/'.$class_name.'.class.php';
        if ( file_exists($fullpath)){
            // easy way 2 do, job as your own way
            include_once $fullpath;
        }
    }
}
// 注册下
spl_autoload_register("Util::autoload");

 

 由于PHP提供了默认的全局__autoload魔术方法,如果之前定义了__autoload的话,如:

 

function __autoload($classname){
// do something like include_once, require_once, etc
}

 

此时调用,spl_autoload_functions 会获得一个autoload的方法数组,__autoload赫然在列,上面的Util::autoload会紧随其后,其机制是会根据注册的顺序轮流执行,直到找到new的类为止。

这样的话,在调用new 生成对象时就会适当载入相关对象,如:

 

$skillService = new SkillService();

 

这个例子中会调用Util::autoload方法,找到$fullpath指定的位置下的SkillService定义文件并加载至,你的路径可能是这样:D:/web-root/class/SkillService.class.php

 

不错!至少我们不用每次都手动的引入文件了。

 

值得注意的是此系列方法源自php 5.1.2以后的版本。

 

另外,有函数 spl_autoload_extensions 可以和 spl_autoload 一起搭配使用,如:

// 以,分割的扩展名字符串
spl_autoload_extensions(‘.php, .class.php’);

// 自动载入相应的类,默认的__autoload实现,但配合了上面的方法
spl_autoload($ClassName);

 其他的spl相关方法还有,spl_autoload_unregister 用来卸载相应的autoload方法。

分享到:
评论

相关推荐

    autoclass

    autoclass是数据挖掘常用的分析工具,可以将大量的数据进行分类。以发现有用的信息。

    Python库 | autoclass-2.1.4-py3-none-any.whl

    为了使用`autoclass`,开发者首先需要将`.whl`文件下载到本地,然后使用pip进行安装: ```bash pip install autoclass-2.1.4-py3-none-any.whl ``` 安装完成后,可以在Python代码中导入并使用`autoclass`库提供的...

    autoclass-c-3-3-5.tar.gz_autocla_autoclass

    《聚类算法实现详解——以autoclass-c-3-3-5为例》 聚类是数据挖掘领域中的一种重要技术,它通过寻找数据之间的相似性来将数据分组,形成所谓的“簇”。在autoclass-c-3-3-5.tar.gz这个压缩包中,我们找到了一个...

    从Python程序中访问Java类的简单示例

    from jnius import autoclass ...上面的代码中,我们使用 autoclass 函数,创建了一个类型代理,对应着Java中java.util.Stack类的所有方法和字段属性。 OK,也许你想要一个Android相关的例子,看这里: from jnius imp

    pyjnius-1.4.2-cp37-cp37m-win32.whl

    使用Jnius导入Java类特别简单,你只需要引入 autoclass 并引用你所需要的类即可: &gt;&gt;&gt; from jnius import autoclass &gt;&gt;&gt; autoclass('java.lang.System').out.println('Hello world') Hello world

    Python库 | pyjnius-1.4.1-cp37-cp37m-win_amd64.whl

    `pyjnius`库的核心功能在于使用JNI(Java Native Interface)来实现Python和Java之间的互操作性。JNI是一种允许Java代码和其他语言写的代码进行交互的接口,使得开发者可以利用Python的强大动态特性与Java的高性能和...

    traffic classfication using clustering algorithms

    ### 使用聚类算法进行流量分类 #### 摘要与背景 随着互联网技术的发展和应用模式的变化,传统的基于端口的网络流量识别方法逐渐显得力不从心。尤其是在点对点(P2P)应用程序中,动态端口号、伪装技术和加密手段的...

    在Python中调用Java方法PyJNIus.zip

    示例代码:&gt;&gt;&gt; from jnius import autoclass &gt;&gt;&gt; Stack = autoclass('java.util.Stack') &gt;&gt;&gt; stack = Stack() &gt;&gt;&gt; stack.push('hello') &gt;&gt;&gt; stack.push('world') &gt;&gt;&gt; stack.pop() 'world' &gt;&gt;&gt; ...

    scripts:适用于各种计算的Python脚本

    Miralib是Java库,其中包含Mirador中使用的所有数据处理和计算算法。 使用可以在Python脚本中运行miralib计算。 这允许结合任何标准Python库(numpy,matplotlib)从命令行执行批处理操作。 运行miralib脚本的唯一...

    大模型开发工具库 HF Transformers

    AutoClass 根据输入的模型类型自动加载对应的类,极大地简化了模型选择和使用过程。 #### 大模型开发环境搭建 - **GPU 开发环境**:为了加快训练速度,通常需要在配备了高性能GPU的机器上进行开发。Hugging Face ...

    sikulixide-2.0.5-win.jar

    Sikuli 是通过图像识别在应用的自动化的,完全的黑盒,适用于很多应用的测试

    基于MindSpore内置的并行技术和组件化设计,是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件

    MindSpore Transformers套件的目标是构建一个大模型训练、推理、部署的全流程套件: ...提供Trainer、pipeline、AutoClass等高阶易用性接口;提供预置SOTA权重自动下载及加载功能;支持人工智能计算中心无缝迁移部署

    Delphi新建OLE自动化服务器演示程序..rar

    - 添加 `TAutoObject` 组件到工程中,设置其 `AutoClass` 属性为你要创建的自动化服务器类。 - 定义自动化服务器类,继承自 `TOleServer` 或 `TCustomOleServer`,并实现你需要暴露给客户端的接口。 - 在服务器类...

    是构建一个大模型训练、推理、部署的全流程套件: 提供业内主流的Transformer类预训练模型, 涵盖丰富的并行特性

    MindSpore Transformers套件的目标是构建一个大模型训练、推理、部署的全流程套件: ...提供Trainer、pipeline、AutoClass等高阶易用性接口;提供预置SOTA权重自动下载及加载功能;支持人工智能计算中心无缝迁移部署;

    MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计

    MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全...提供Trainer、pipeline、AutoClass等高阶易用性接口;提供预置SOTA权重自动下载及加载功能;支持人工智能计算中心无缝迁移部署;

    一个大模型训练、微调、评估、推理、部署的全流程开发套件

    该套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件: ...提供Trainer、pipeline、AutoClass等高阶易用性接口; 提供预置SOTA权重自动下载及加载功能; 支持人工智能计算中心无缝迁移部署;

    第三层交换技术及其应用(下)

    3. **自动流量分类**:FIRE芯片能够自动识别和分类用户定义的传输类型,通过AutoClass技术,根据协议类型和端口进行分类,支持802.1p和802.1Q服务映射,简化网络管理。 在大型网络环境中,CoreBuilder3500的第三层...

Global site tag (gtag.js) - Google Analytics