• thinkphp 类的扩展


    ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。

    大理石平台价格

    公共类库

    公共类库通常是指ThinkPHP/Library目录下面的类库,例如:

    1. Think目录:系统核心类库
    2. Org目录:第三方公共类库

    这些目录下面的类库都可以自动加载,你只要把相应的类库放入目录中,然后添加或者修改命名空间定义。 你可以在Org/Util/目录下面添加一个Image.class.php 文件,然后添加命名空间如下:

    1. namespace OrgUtil;
    2. class Image {
    3. }

    这样,就可以用下面的方式直接实例化Image类了:

    1. $image = new OrgUtilImage;

    除了这些目录之外,你完全可以在ThinkPHP/Library目录下面添加自己的类库目录,例如,我们添加一个Com目录用于企业类库扩展:

    ComSinaApp类(位于Com/Sina/App.class.php )

    1. namespace ComSina;
    2. class App {
    3. }

    ComSinaRank类(位于Com/Sina/Rank.class.php)

    1. namespace ComSina;
    2. class Rank {
    3. }

    公共类库除了在系统的Library目录之外,还可以自定义其他的命名空间,我们只需要注册一个新的命名空间,在应用或者模块配置文件中添加下面的设置参数:

    1. 'AUTOLOAD_NAMESPACE' => array(
    2. 'Lib' => APP_PATH.'Lib',
    3. )

    我们在应用目录下面创建了一个Lib目录用于放置公共的Lib扩展,如果我们要把上面两个类库放到LibSina目录下面,只需要调整为:

    LibSinaApp类(位于Lib/Sina/App.class.php )

    1. namespace LibSina;
    2. class App {
    3. }

    LibSinaRank类(位于Lib/Sina/Rank.class.php)

    1. namespace LibSina;
    2. class Rank {
    3. }

    如果你的类库没有采用命名空间的话,需要使用import方法先加载类库文件,然后再进行实例化,例如: 我们定义了一个Counter类(位于Com/Sina/Util/Counter.class.php):

    1. class Counter {
    2. }

    在使用的时候,需要按下面方式调用:

    1. import('Com.Sina.Util.Couter');
    2. $object = new Counter();

    应用类库

    应用类库通常是在应用或者模块目录下面的类库,应用类库的命名空间一般就是模块的名称为根命名空间,例如: HomeModelUserModel类(位于ApplicationHomeModel)

    1. namespace HomeModel;
    2. use ThinkModel;
    3. class UserModel extends Model{
    4. }

    CommonUtilPay类(位于ApplicationCommonUtil)

    1. namespace CommonUtil;
    2. class Pay {
    3. }

    AdminApiUserApi类(位于ApplicationAdminApi)

    1. namespace AdminApi;
    2. use ThinkModel;
    3. class UserApi extends Model{
    4. }

    记住一个原则,命名空间的路径和实际的文件路径对应的话 就可以实现直接实例化的时候自动加载。

  • 相关阅读:
    file.delete()删除文件失败
    Axure RP Extension for Chrome插件离线安装
    C#---EF映射MySQL
    C#--二维数组
    MySQL--增删改查分页存储过程以及事务
    C# --MVC实现简单上传下载
    配置SQLServer,允许远程连接
    C#——工厂模式
    C#--条形码和二维码的简单实现
    C#—接口和抽象类的区别?
  • 原文地址:https://www.cnblogs.com/furuihua/p/11842774.html
Copyright © 2020-2023  润新知