用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2370|回复: 0
收起左侧

[CI代码解读] 告诉你为何libraries 方法引用命名规则那么大写

[复制链接]
发表于 2017-2-8 18:16:51 | 显示全部楼层 |阅读模式
首先我们先从libraries本身的方法来看

/system/core/Loader.php 文件

PHP复制代码
 
public function library($library, $params = NULL, $object_name = NULL)
{
   if (empty($library))
   {
      return $this;
   }
   elseif (is_array($library))
   {
      foreach ($library as $key => $value)
      {
         if (is_int($key))
         {
            $this->library($value, $params);
         }
         else
         {
            $this->library($key, $params, $value);
         }
      }
 
      return $this;
   }
 
   if ($params !== NULL && ! is_array($params))
   {
      $params = NULL;
   }
 
   $this->_ci_load_library($library, $params, $object_name);
   return $this;
}
 
复制代码


libraries 这个函数写的很大众化,基本意思就是首先参数是不是空呀。~ 然后就是因为可以传字符串,也可以传数组,既可以加载一个或多个类。然后首先他得判断下是不是数组。然后就是判断下有没有传输初始化参数(既第二个参数),随后就调用了第二个方法 function _ci_load_library


PHP复制代码
 
$class = ucfirst($class);
 
// Is this a stock library? There are a few special conditions if so ...
if (file_exists(BASEPATH.'libraries/'.$subdir.$class.'.php'))
{
   return $this->_ci_load_stock_library($class, $subdir, $params, $object_name);
}
 
复制代码


第二个方法主要看这段代码,ucfirst 文件名大写就是在这里设置的。所以你的文件首字母必须大写。否则就报错喽。
最后就是 function _ci_load_stock_library 函数

PHP复制代码
 
if (file_exists($path = $path.'libraries/'.$file_path.$library_name.'.php'))
{
   // Override
include_once($path);
 
复制代码

也是部分代码。
首先在第二个方法 _ci_load_stock_library 传入的一个参数 $class. _ci_load_stock_library方法接收后会直接引用你自定义的这个类。


libraries 引用自定义类就是这个样子的了。


注:所以说你可以 SmsClass 也可以 Smsclass 或者 SMSCLASS ,但就是不能 smsClass,个人感觉小驼峰好看,大驼峰不好看。

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

本版积分规则