让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

原文地址:https://www.cnblogs.com/zinging/p/12834653.html