Android
发表于 2017-3-15 16:05:43
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');
$test = new Testclass(); 这种用法会报错的
Closer
发表于 2017-3-15 16:07:47
Android 发表于 2017-3-15 16:05
$test = new Testclass(); 这种用法会报错的
你需要的是兩件事:
1. 看 CI 手冊怎麼使用相關函數
2. 理解 PHP 的基礎使用
Android
发表于 2017-3-15 16:08:19
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');
用return不出数据的,你看 我说的 问题一 贴的代码
Closer
发表于 2017-3-15 16:12:18
Android 发表于 2017-3-15 16:08
用return不出数据的,你看 我说的 问题一 贴的代码
你的問題一,前半段正確,後半段錯了
CI 是在控制器端用 $this->load->view('blogview.html', $data); 這種方式來載入視圖
相同的,在控制器 echo 也是可行的 (但不建議)
你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo
自然而然沒有任何東西
Android
发表于 2017-3-15 16:21:10
Closer 发表于 2017-3-15 16:12
你的問題一,前半段正確,後半段錯了
其一:不明白你这话--你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo,
其二:我就是这么做的啊- $this->load->view('blogview.html', $data); 這種方式來載入視圖。
这不是有返回值嘛
public function loadfun() {
// return"通过 加载数据";
echo"通过 加载数据";
}
下面属于view层的:
<?php
echo $nji ->loadfun();
?>
Closer
发表于 2017-3-15 16:25:54
Android 发表于 2017-3-15 16:21
其一:不明白你这话--你載入的 loadfun() 是 return; 既沒有 view() 也沒有 echo,
其二:我就是这么 ...
你問題一的 code 只剩下這樣
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index(){
$this -> load->library('testclass');
$this ->testclass->loadfun();
}
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Testclass{
protected$CI;
public function _construct() {
$this -> $CI =& get_instance();
}
public function testlass() {
echo $this ->loadfun();
}
public function loadfun() {
return"通过 this 加载数据";
}
}
你試圖訪問 Welcome 的 index 方法
他載入了類名 testclass (3.x+ 要注意大小寫)
然後試圖呼叫 loadfun()
此時你的 loadfun() 是用 return
又因 $this->testclass->loadfun(); 沒用任何變數承接 loadfun() 所 return 回的值
於是 index() 既沒有 view() 也沒有 echo
理論上你問題一的畫面應該是白的
Hex
发表于 2017-3-15 16:38:20
Closer 发表于 2017-3-15 16:03
1. 你是在手冊的哪一頁看到這種用法?
$nji = $this->load->library('testclass');
你不要试图把对象特别是 CI 里面的类库传递给视图,你可以理解成 CI 不支持(或不推荐)你这样做,正确的做法就是在控制器里获取 loadfun() 的返回值,然后把这个值传给视图。
Android
发表于 2017-3-15 16:42:20
Closer 发表于 2017-3-15 16:25
你問題一的 code 只剩下這樣
是的,这是我的原因,少加echo整体应该是 echo $this ->testclass->loadfun(); 这样用return 就可以了
其二: 那在view层 怎么处理呢?
Closer
发表于 2017-3-15 16:56:59
Hex 发表于 2017-3-15 16:38
你不要试图把对象特别是 CI 里面的类库传递给视图,你可以理解成 CI 不支持(或不推荐)你这样做,正确的做 ...
這點我表示理解與支持
只是 Android 連基本都不懂了
只能先循序漸進地跟他說
Closer
发表于 2017-3-15 16:59:29
Android 发表于 2017-3-15 16:42
是的,这是我的原因,少加echo整体应该是 echo $this ->testclass->loadfun(); 这样用return 就可 ...
接下來你只要參考 CI 手冊的視圖 http://codeigniter.org.cn/user_guide/general/views.html#id6
或 Hex 所提供的範例即可 http://codeigniter.org.cn/forums/forum.php?mod=redirect&goto=findpost&ptid=24149&pid=102164&fromuid=34802