Fatal error: Call to undefined function M()
Fatal error: Call to undefined function M() in F:\wamp\www\mvc\libs\Controller\testController.class.php on line 6 這該怎么解決呢,請大神指點
Fatal error: Call to undefined function M() in F:\wamp\www\mvc\libs\Controller\testController.class.php on line 6 這該怎么解決呢,請大神指點
2018-03-20
舉報
2018-06-13
33234
2018-03-22
變成這個問題了
2018-03-22
<?php
//備注:建立一個控制器調用函數C
? ?function C($name,$method){
? ? ? ?require_once('/libs/Controller/'.$name.'Controller.class.php');
? ? ? ? //$testController = new testController();
? ? ? ? //$testController->show();
? ? ? ? //將字符串轉化為可執行的php語句
? ? ? ? eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');
? ? ? ? C('test','show');
? ?}
//傳遞的參數只有name 因為模型通常帶有自己的參數,所以不封裝起來??刂破髟瓌t不能有自己的參數。
? ? ? ? function M($name){
? ? ? ? ? ? require_once('/libs/Model/'.$name.'Model.class.php');
? ? ? ? ? ? // $testModel = new testModel();
? ? ? ? ? ? eval('$obj= new '.$name.'Model();');
? ? ? ?
? ? ? ? ? ? return $obj;
? ? ? ?
? ? ? ? }
? ? ? ? function V($name){
? ? ? ? ? ? require_once('/libs/View/'.$name.'View.class.php');
? ? ? ? ? ? // ?$testView = new testView();
? ? ? ? ? ? eval('$obj=new '.$name.'View();');
? ? ? ? ? ? return $obj;
? ? ? ? }
? ?
? ?//對輸入參數進行篩選,
? ?function daddslashes($str){
? ? ? ?return (!get_magic_quotes_gpc())?addslashes($str):$str;
? ?}
?>
2018-03-21
function.php
<?php
//備注:建立一個控制器調用函數C
? ? function C($name,$method){
? ? ? ? require_once('/libs/Controller/'.$name.'Controller.class.php');
? ? ? ? ?//$testController = new testController();
? ? ? ? ?//$testController->show();
? ? ? ? ?//將字符串轉化為可執行的php語句
? ? ? ? ?eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');
//傳遞的參數只有name 因為模型通常帶有自己的參數,所以不封裝起來。控制器原則不能有自己的參數。
? ? ? ? ? ? }
function M($name){
? ? ? ? ? ? ?require_once('/libs/Model/'.$name.'Model.class.php');
? ? ? ? ? ? ?// $testModel = new testModel();
? ? ? ? ? ? ?eval('$obj= new '.$name.'Model();');
? ? ? ? ? ? ?return $obj;?
? ? ? ? ?}
? ? ? ? ?function V($name){
? ? ? ? ? ? ?require_once('/libs/View/'.$name.'View.class.php');
? ? ? ? ? ? ?// ?$testView = new testView();
? ? ? ? ? ? ?eval('$obj=new '.$name.'View();');
? ? ? ? ? ? ?return $obj;
? ? ? ? ?}
? ? //對輸入參數進行篩選,
? ? function daddslashes($str){
? ? ? ? return (!get_magic_quotes_gpc())?addslashes($str):$str;
? ? }
?>
2018-03-21
undefined function M() 出現這個問題是因為你的大括號閉合問題,你C()函數的括號內包含了M()和C()函數,你后面還會出現錯誤,M()和V()函數實例化時候new后面要加空格再跟類名,你這兩處都沒加,還有一處是V()函數最后是要返回值用return?$obj; ? 你試下,我測試
2018-03-20
function.php <?php //備注:建立一個控制器調用函數C ????function?C($name,$method){ ????????require_once('/libs/Controller/'.$name.'Controller.class.php'); ?????????//$testController?=?new?testController(); ?????????//$testController->show(); ?????????//將字符串轉化為可執行的php語句 ?????????eval('$obj?=?new?'.$name.'Controller();$obj->'.$method.'();'); ?????????C('test','show'); //傳遞的參數只有name?因為模型通常帶有自己的參數,所以不封裝起來。控制器原則不能有自己的參數。 ?????????function?M($name){ ?????????????require_once('/libs/Model/'.$name.'Model.class.php'); ?????????????//?$testModel?=?new?testModel(); ?????????????eval('$obj=?new'.$name.'Model();'); ?????????????return?$obj;? ?????????} ?????????function?V($name){ ?????????????require_once('/libs/View/'.$name.'View.class.php'); ?????????????//??$testView?=?new?testView(); ?????????????eval('$obj=new'.$name.'View();'); ?????????????echo?$obj; ?????????} ????} ????//對輸入參數進行篩選, ????function?daddslashes($str){ ????????return?(!get_magic_quotes_gpc())?addslashes($str):$str; ????} ?> testController.php <?php ?class?testController{ ???????//控制器的作用是調用模型,并調用視圖,將模型產生的數據傳遞給視圖并讓相關視圖去顯示 ?????function?show(){ ????????//$testModel?=?new?testModel();?由于index可以簡化為以下代碼 ????????$testModel?=?M('test'); ????????$data?=?$testModel->get(); ????????//$testView?=?new?testView(); ????????$testView?=?V('test'); ????????$testView?->?display($data); ?????} ?} ?> testModel.php <?php ?class?testModel{ ?????function?get(){//模型的作用是獲取數據并處理返回數據 ?????????return?"Hello?world"; ?????} ?} ?> testView.php<?php
class testView{
? ? function display($data){//視圖的作用是將獲得的數據進行組織、美化等,并最終向用戶終端輸出
? ? ? ? echo $data;
? ? }
}
?>
index.php
<?php
? ?//url形式 index.php?controller=控制器名$method=方法名
? ?require_once('function.php');
? ?//內置允許訪問的控制器名和方法名
? ?$controllerAllow= array('test','index');
? ?$methodAllow=array('test','index','show');
? ?//過濾非法參數
? ?$controller = in_array($_GET['controller'],$controllerAllow)?daddslashes($_GET['controller']):'index';
? ?$method = ?in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';
? ?C($controller,$method);
?>
test.php
<?php
? ?require_once('testController.class.php');
? ?require_once('testModel.class.php');
? ?require_once('testView.class.php');
? ?$testController = new testController();//把類實例化
? ?$testController->show();//使用show方法
? ?
?>
2018-03-20
提示錯誤是未定義M()函數,你再仔細檢查下?