专栏首页Grace development[CI代码解读] 告诉你为何libraries 方法引用命名规则需要大写

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

首先我们先从libraries本身的方法来看

/system/core/Loader.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

$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 函数

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,个人感觉小驼峰好看,大驼峰不好看。

最后修改:2年前 2017-02-08

© 著作权归作者所有

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 日常划水:短信验证码开发实例

    大家好,我是CrazyCodes,在日常开发中有没有遇到过发送短信验证码的接口需要开发?你是如何处理短信验证码发送的呢?本篇我分享下短信验证码发送的设计。

    CrazyCodes
  • 冷门PHP函数汇总

    整理一些日常生活中基本用不到的PHP函数,也可以说在框架内基本都内置了,无需我们去自行使用的函数。量不多。后续在日常开发中如遇到更多的冷门,会更新本文章

    CrazyCodes
  • 取代PHP原生函数的一些扩展包

    你可以用guzzlehttp完全取代curl,file_get_content,fopen等函数。这个扩展包使用起来极为顺手。我们在代码量上看下对比。

    CrazyCodes
  • 关于Eclipse 和 IDEA 导入library库文件 的步骤

    听着music睡
  • 欧洲科学家计划建立大型人工智能中心来与中美竞争

    【概要】顶尖科学家已制定相关计划,要在欧洲建立大型跨国研究所,致力于世界级的人工智能(AI)研究,以此作为培养和保留欧洲顶尖人才的最后一搏。

    人工智能快报
  • R语言绘图 | 给气泡矩阵图上个色

    不管我们做什么组学分析,分析到最后总是躲不过富集分析。富集分析我们可以使用R包" clusterProfiler "进行(具体教程见使用clusterProfi...

    生信小王子
  • 你觉得你现在从事的职业,未来一定会被人工智能取代吗?

    前些天看到一张表,《未来最有可能被人工智能取代的工种》,里面详细的列出了很多个职业名称。乌镇会议,让很多人越来越真实的感觉到,人工智能时代就要到来了,同时,也出...

    企鹅号小编
  • emlog后台作者权限SQL注入

        实话说,以后不想再挖web漏洞了,也不想发这类文章,web的东西搞来搞起就是那个样,我原本就不想深入,想那些大神一样能把一个cms分析得透彻。我有时候...

    phith0n
  • 安卓耗电之谜:罪魁祸首竟是隐藏通信

    简介 我们目前并不清楚为什么Android有这么多使用远程服务器进行隐藏通信的app,尤其是这些隐藏通信其实并没有被智能机主使用。我们知道app是从云端传入传出...

    FB客服
  • 代码管理| 创建自己的私有Cocopods库

    iOS组件化的实现基本基于cocoapods,如何使用cocoapods创建自己的组件库,是实现组件化的第一要素,下面就创建自己的私有Cocopods库展开实战...

    進无尽

扫码关注云+社区

领取腾讯云代金券