ѡ̳

 找回密码
 ע
搜索
查看: 125|回复: 0
打印 上一主题 下一主题

phpcms加载pc_base::load_app_class

[复制链接]

789

主题

1158

帖子

4197

积分

Ա

Rank: 9Rank: 9Rank: 9

积分
4197
跳转到指定楼层
¥
发表于 2017-11-7 03:07:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
例如:
  1. $site = pc_base::load_app_class('sites');
复制代码
代表加载当前模块下的classes里面的sites.class.php 且需要初始化( new后赋值给变量) 共三个参数分别代表类名  模块名  是否初始化
  1. pc_base::load_app_class('admin','admin',0);
复制代码
代表加载:phpcms下modules下的admin模块下的classes里面的的 admin.class.php


源码:
  1. public static function load_app_class($classname, $m = '', $initialize = 1) {
  2.                 $m = empty($m) && defined('ROUTE_M') ? ROUTE_M : $m;
  3.                 if (empty($m)) return false;
  4.                 return self::_load_class($classname, 'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.'classes', $initialize);
  5.         }
复制代码
关联源码
  1. /**
  2.          * 加载类文件函数
  3.          * @param string $classname 类名
  4.          * @param string $path 扩展地址
  5.          * @param intger $initialize 是否初始化
  6.          */
  7.         private static function _load_class($classname, $path = '', $initialize = 1) {
  8.                 static $classes = array();
  9.                 if (empty($path)) $path = 'libs'.DIRECTORY_SEPARATOR.'classes';

  10.                 $key = md5($path.$classname);
  11.                 if (isset($classes[$key])) {
  12.                         if (!empty($classes[$key])) {
  13.                                 return $classes[$key];
  14.                         } else {
  15.                                 return true;
  16.                         }
  17.                 }
  18.                 if (file_exists(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
  19.                         include PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php';
  20.                         $name = $classname;
  21.                         if ($my_path = self::my_path(PC_PATH.$path.DIRECTORY_SEPARATOR.$classname.'.class.php')) {
  22.                                 include $my_path;
  23.                                 $name = 'MY_'.$classname;
  24.                         }
  25.                         if ($initialize) {
  26.                                 $classes[$key] = new $name;
  27.                         } else {
  28.                                 $classes[$key] = true;
  29.                         }
  30.                         return $classes[$key];
  31.                 } else {
  32.                         return false;
  33.                 }
  34.         }
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | ע

本版积分规则

QQ|Archiver|ֻ|С|ѡ̳

GMT+8, 2026-5-2 05:52 , Processed in 0.090642 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表
0.1038s