2017-09-08 21 views
0

私はPHPのmvcプロジェクトを持っています。 これは私のルータークラスです。 ルータクラスジョブは、ウェブサイトのメインインデックスページに含まれているコントローラです。 localhost上で動作しますが、ホスト上でアップロードしたときに動作しません。 私は何をしていますか?php mvc router not working

<?php 
class route 
{ 
    function __construct() 
    { 
     if(empty($_GET['url'])) 
     { 
      $url = "index"; 
     } 
     else 
     { 
      $url = $_GET['url']; 
     } 
     $url = explode("/",$url); 
     if(!empty($url[0])) 
     { 
      $controllername = "controllers/".$url[0].".php"; 
      if(file_exists($controllername)) 
      { 
       require($controllername); 
       $object = new $url[0]; 
       //$object->loadmodel($url[0]); 
       if(!empty($url[1])) 
       { 
        if(method_exists($object,$url[1])) 
        { 
         if(!empty($url[2])) 
         { 
          $object->$url[1]($url[2]); 
         } 
         else 
         { 
          $object->$url[1](); 
         } 
        } 
        else 
        { 
         echo "Error"; 
        } 
       } 
       else 
       { 
        echo "Error"; 
       } 
      } 
      else 
      { 
       echo "Error"; 
      } 
     } 
    } 
} 

これはerror_logの中に私の誤りである

thrown in /home/mogeir/public_html/libs/route.php PHP Notice: Array to string conversion in /home/mogeir/public_html/libs/route.php on line 33 PHP Notice: Undefined property: admin::$Array in /home/mogeir/public_html/libs/route.php on line 33 PHP Fatal error: Uncaught Error: Function name must be a string in /home/mogeir/public_html/libs/route.php:33

+0

コードを説明してください。 – Ray

答えて

0

代わりに、次の関数呼び出しの形式を使用します - コメントのものはあまりにも正しい選択肢です。 call_user_funcおよびcall_user_func_arrayを参照してください。

if (!empty($url[2])) { 
    $object->{$url[1]}($url[2]); 

    // Alternative 1 
    // call_user_func(array($object, $url[1]), $url[2]); 

    // Alternative 2 
    // call_user_func_array(array($object, $url[1]), array($url[2])); 
} else { 
    $object->{$url[1]}(); 

    // Alternative 1 
    // call_user_func(array($object, $url[1])); 

    // Alternative 2 
    // call_user_func_array(array($object, $url[1]), array()); 
} 

あなたが言った:

活性化やPHPのバージョンの違いでエラー報告に関係しています

its work on localhost but when i uploaded on my host not working what i do ?

+0

注:エラーが発生した場合、エラーコントローラにリダイレクトして、対応するエラーメッセージを引数として渡してください。 –