首页 网络技术
  1. 正文

关于phpcms的第三方composer库

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的第三方composer库

引用方法:

pc_base::vendor( 'autoload','',1 )

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

结构示图:

关于phpcms的第三方composer库

引用方法:

比如:

pc_base::vendor('autoload','oss','attachment');

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

本文标题:关于phpcms的第三方composer库
本文链接:https://www.qqooo.cn/post/2187.html
版权说明:网站文章均来源于手工整理和网友投稿,若有不妥之处请来信 feelym@88.com 处理,谢谢!