[英]OOP PHP Codeigniter Controller Hierarchy
我的OOP概念有些問題。 我會盡力解釋。
我有這個課
class Application_controller extends CI_Controller{
public function addItem(){
"some code to add the item to the database (working)";
}
}
我還有另一個類,兩個控制器:
require_once 'application_controller.php';
class Contact extends Application_controller{
public function __construct(){
parent::__construct("variables needed");
}
}
在聯系人的視圖添加中,我添加了以下操作contact / addItem 。
好的,這就是我對OOP的一般了解。
因為addItem方法擴展了Application_controller,所以它不是應該屬於Contact類的一部分嗎?
我之所以問是因為,當我提交表單時,我什么也沒做,並且當我在Contact類中添加方法addItem覆蓋父類時,它起作用了。
您沒有采取任何措施的原因是codeigniter在Contact類中找不到方法addItem(更新:這可能是由於CodeIgniter路由的工作方式)。 解決方案是使addItem成為Model中的通用方法,該方法將數據存儲在表中,將其移動到Model並將模型加載到控制器中。
創建application / models / writeModel.php
class writeModel extends CI_Model{
function addItem(){
// code here
}
}
在您的控制器中:
class Contact extends Controller{
function __controller(){
parent::Controller();
$this->load->model('writeModel');
}
function somefunction(){
$this->writeModel->addItem(); // call the method here
}
}
參考: CodeIgniter模型
這里的問題(除了OP中的幾個語法錯誤之外)可能是“聯系”無法擴展“ Application_controller”的原因,因為它不知道它的存在。 如果我們設置這樣的測試:
/controllers/Test.php
class Test extends CI_Controller
{
function __construct()
{
parent::__construct();
}
function index()
{
echo 'test';
}
}
/controllers/TestTwo.php
require_once("Test.php");
class TestTwo extends Test
{
function __construct()
{
parent::__construct();
}
function index()
{
parent::index();
echo ' and test two';
}
}
通過導航到appurl / TestTwo /,我們將獲得所需的“ test and test two”輸出。 這是因為TestTwo知道Test。 刪除require(); TestTwo.php中的行將破壞該關系。
從TestTwo中刪除index()函數將導致通過導航到appurl / TestTwo /來僅輸出“ test”。
我在Codeigniter論壇上找到了類似問題的答案。 這樣說
您的ShopDownloads將從Shop控制器繼承(方法,屬性等)。 如視頻教程中所述,您必須從controller類繼承您的類,以便它可以繼承codeigniter為您提供的所有屬性和方法。
Sohaib,
該文章的鏈接為http://codeigniter.com/forums/viewthread/102718/#518120
我不知道怎么回事,但是今天這行得通。 可能是服務器。 只需重新啟動即可。
解決了,只需立即啟動服務器並開始開發LOL。 謝謝你們的時間。
問候,
Elkas
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.