zoukankan      html  css  js  c++  java
  • 让PHPCMS V9 支持Composer第三方扩展类库

    http://j.icoyun.com/archives/26670.html

    前言

    什么是Composer

    为了避免一些不必要的麻烦,唠叨几句composer,其实我自己也迷糊ing,这方面知识面向百度!

    Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 “packages” 和 “libraries”,但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。

    如何安装Composer

    同样是面向百度来着,但百度搜到的东西太多都是无法用或者失败,所以这里选择的教程是Composer中文网全量镜像,请移步这里看教程(突然懒了不想自己写了):https://pkg.phpcomposer.com/

    PHPCMS V9支持Composer方法

    第一步:打开/phpcms/base.php

    在class pc_base 里面加入如下函数:

    /**
    * 快速导入第三方框架类库 所有第三方框架的类库文件放到系统的libs/Vendor目录或者当前模块的clases目录下面
    * @param string $classname 类库
    * @param string $base 基础目录
    * @param string $m 模块 当模块为1时调用系统的三方类库
    * @param string $ext 类库后缀
    * @return boolean
    */
    public static function vendor($classname, $base = , $m = , $ext = ‘.php’)
    {
    #if(empty($base)) $base=$classname;
    if (empty($m) && defined(‘ROUTE_M’)) {
    $m = ROUTE_M;
    } else {
    $m = ($m == 1) ? NULL : $m;
    }
    return self::import($classname, $base, $m, $ext);
    }
    /**
    * 导入所需的类库 同java的Import 本函数有缓存功能
    * @param string $classname 类库命名空间字符串
    * @param string $base 起始路径
    * @param string $ext 导入的文件扩展名
    * @return boolean
    */
    private static function import($classname, $base, $m = , $ext = ‘.php’)
    {
    static $_file = array();
    static $classes = array();
    $key = md5($classname);
     
    if (isset($classes[$key])) {
    if (!empty($classes[$key])) {
    return $classes[$key];
    } else {
    return true;
    }
    }
    $classname = str_replace(array(‘.’, ‘#’), array(‘/’, ‘.’), $classname);
     
    if (isset($_file[$classname . $m]))
    return true;
    else
    $_file[$classname . $m] = true;
    $class_strut = explode(‘/’, $classname);
    #print_r($class_strut);
    if (empty($m)) { //模块为空则加载系统的
    $m = ‘libs’ .DIRECTORY_SEPARATOR. ‘vendor’ . DIRECTORY_SEPARATOR . $base;
    } else { // 加载其他模块的类库
    $m = ‘modules’ . DIRECTORY_SEPARATOR . $m . DIRECTORY_SEPARATOR . ‘classes’ . DIRECTORY_SEPARATOR . $base;
    }
    if (substr($m, 1) != ‘/’) $m .= ‘/’;
    $classfile = $m . $classname . $ext;
    if (!class_exists(basename($classname), false) && file_exists(PC_PATH . $classfile)) {
    require PC_PATH . $classfile;
    } else {
    echo (“The $classname library cannot be found in the directory of Vendor”);
     
    }
    return null;
    }

    用法:

    系统类库存放在/phpcms/libs目录里,在这个文件夹里建立composer.json 后进行composer install,会在当前目录里建立项目文件夹vendor

    结构图:

    百度收录提交入口

    引用方法:

    模块类库放在/phpcms/modules/classes里,可以直接下载类库放在这里使用

    结构示图:

    百度收录提交入口

    引用方法:

    比如: 

    引入/phpcms/modules/attachment/classes/oss/autoload.php

  • 相关阅读:
    html5实现GIF图效果
    响应式网页设计简单入门(强烈推薦!!!!)
    form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
    【JavaScript】Write和Writeln的区别
    HTML表格中各元素标签的位置对style属性有效性的影响
    HTML textarea 莫名其妙出现几个空格的原因
    PHP 正则匹配手机号
    极简主义法编写JavaScript类
    jQuery on绑定事件
    jQuery ajax() 参数,回调函数,数据类型,发送数据到服务器,高级选项
  • 原文地址:https://www.cnblogs.com/zinging/p/12834653.html
Copyright © 2011-2022 走看看