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

[版本 3.x] ci框架$this->load->library 引入的文件有个问题想请教

[复制链接]
发表于 2016-8-25 09:22:51 | 显示全部楼层 |阅读模式
我在模型层 aaaa_model.php
$this->load->library('api/ChuanglanSmsApi');  在这个文件里面还引入了一个文件require_once("chuanglan_config.php");

但是好像我访问不到这个文件chuanglan_config.php 文件,里面的内容好像没有起作用
这是什么情况
发表于 2016-8-25 10:23:30 | 显示全部楼层
require_once 的路径要搞对,搞对路径应该是可以加载的。
发表于 2016-8-25 10:24:43 | 显示全部楼层
根据你的猜测,如果没有报错的情况下,我觉得是你的require_once("chuanglan_config.php");这一句没有运行到,你可以直接在chuanglan_config.php里面输出看是否有到文件里面去
 楼主| 发表于 2016-8-25 11:02:22 | 显示全部楼层

关于在CI框架里面 include 作用域有问题请教

本帖最后由 张三的歌 于 2016-8-25 11:07 编辑

请教个问题:
b.php 里面 include c.php 文件
我在a.php 里面 第一句话就include b.php 那么两个文件都会被访问到
如果我在a.php 里面的 public function __construct() 里面 include ,那么只能访问到b.php , c.php访问不到
这是为什么呀

a.php代码
<?php

class A extends CI_Controller{
        public function __construct(){
                include 'api/b.php';
        }
        
        public function index(){
                $test = new nihao;
               
                $a = $test->aaa();
                var_dump($a);
               
        }
}

b.php代码
<?php
require_once("c.php");
class nihao{
        public function aaa(){
                global $chuanglan_config;
                return $chuanglan_config['name'].'访问成功了呀!';
        }
}
?>

c.php的代码
<?php

$chuanglan_config['name']        = 'zhangsan ';

?>

是不是在CI框架里面 include有 作用域
如果以上代码执行成功,就会返回下面这句话, C.php里面的zhangsan访问不到

发表于 2016-8-25 11:12:53 | 显示全部楼层
在框架里 引入类库 是$this->load->library()
 楼主| 发表于 2016-8-25 11:26:28 | 显示全部楼层

关于ci框架的 libraries 有问题请教

控制器a 的代码
<?php
class A extends CI_Controller{
        public function __construct(){
                $this->load->library('api/b');
        }
       
        public function index(){
                $test = new nihao;
               
                $a = $test->aaa();
                var_dump($a);
               
        }
}

libraries 下面有2个文件
b.php
require_once("c.php");
class nihao{
        public function aaa(){
                global $chuanglan_config;
                return $chuanglan_config['name'].'访问成功了呀!';
        }
}
class B {
       
}

还有c.php
<?php

$chuanglan_config['name']        = 'zhangsan ';

?>

为什么 我的__construct 里面 引入了b.php , 却访问不到c.php
发表于 2016-8-25 11:35:51 | 显示全部楼层
你是访问不了 c.php 里的变量吧?
我感觉是变量作用域的问题。加 global 试试?
另外,你这样 new 一个类的方式也不是 CI 正常的代码风格。
发表于 2016-8-25 11:42:32 | 显示全部楼层
张三的歌 发表于 2016-8-25 11:02
请教个问题:
b.php 里面 include c.php 文件
我在a.php 里面 第一句话就include b.php 那么两个文件都会被 ...

不是 CI 代码有作用域,是 PHP 有作用域。。。
用 global 声明你的变量。

本版积分规则