2016-11-30 12 views
0

私のコードにいくつかの問題があります。私は私の方法でオブジェクト配列の値を呼び出したい、府持っているエラー:メソッドのオブジェクト配列を呼び出すPHP

注意:未定義の変数:login_error Cで:\ xamppの\ htdocsに\フロントエンド\コントローラ\ Users.phpライン27上の

注意してください: Cで非オブジェクトのプロパティを取得しようとすると:\ xamppの\ htdocsに\フロントエンド\コントローラ\ Users.php Users.php

私のコントローラであるライン27

class Users extends Controller 
{ 


    function doLogin(){ 

     if(isset($_POST['zaloguj'])){ 
      Users::error($login_error->empty); 
     } 
    } 
} 

オブジェクトの配列を持つ言語ファイル。私の誤差関数と

<?php 
$login_error = (object) array(
    'empty' => 'ERROR TEXT', 
    'dberror' => 'ERROR TEXT 2' 
); 
?> 

グローバルコントローラ:

public function error($text){ 
     echo '<div class="alert alert-danger"> 
      <strong>Błąd!</strong> '.$text.'</div>'; 
    } 
    public function success($text){ 
     echo '<div class="alert alert-success"> 
      <strong>Brawo!</strong> '.$text.'</div>'; 
    } 
    public function info($text){ 
     echo '<div class="alert alert-info"> 
      <strong>Uwaga!</strong> '.$text.'</div>'; 
    } 

ローダー - 私は1つのファイルにすべての私のコントローラーをロードします。

<?php 
require_once('config.php'); 

/////////////////////////////////// 
// INCLUDING LANGUAGES 
/////////////////////////////////// 
include('frontend/language/pl_PL.php'); 

/////////////////////////////////// 
// INCLUDING CONTROLERS 
////////////////////////////////// 
require_once('frontend/controller/Controller.class.php'); 
require_once('frontend/controller/Users.php'); 

////////////////////////////////// 
// INCLUDING MODELS 
////////////////////////////////// 
require_once('frontend/model/model.php'); 
require_once('frontend/model/Users.php'); 

?> 
+1

'$ login_error'は' doLogin'で定義されていないので、変数は存在しません。質問はなんですか? –

+0

[参照:可変スコープとは何か?どこから何か「未定義の変数」のエラーからアクセスできる変数?](http://stackoverflow.com/questions/16959576/reference-what-is-variable-scopeどこからでもアクセス可能な変数) –

+0

Controllerクラスのすべてのメソッドに言語ファイルを含めるにはどうすればよいですか? 言語ファイルをすべてのメソッドに1つずつ含めたくありません。 –

答えて

0

あなたは言語のライブラリを書いて、どこでも、このようなからのインスタンス(シングルトン)を取得することができます:あなたのONEで

class Language{ 

    private static $instance; 

    public $login_error; 

    /* 
     ..etc 
    */ 

    public function __construct(){ 
     self::$instance = $this; 
    } 

    public function load_file($file){ 
     include $file; 
     $this->login_error = $login_error; 
     /* 
      And other variables.. 
     */ 
    } 

    public static function &get_instance(){ // Singleton get instance 

     return self::$instance; 

    } 

:あなたのフロントエンド/ライブラリ/ language.phpで

require_once('config.php'); 

/////////////////////////////////// 
// INCLUDING LANGUAGES 
/////////////////////////////////// 
include('frontend/libraries/language.php'); 

$language = new Language(); 

$language->load_file('frontend/language/pl_PL.php'); 

/////////////////////////////////// 
// INCLUDING CONTROLERS 
////////////////////////////////// 
require_once('frontend/controller/Controller.class.php'); 
require_once('frontend/controller/Users.php'); 

////////////////////////////////// 
// INCLUDING MODELS 
////////////////////////////////// 
require_once('frontend/model/model.php'); 
require_once('frontend/model/Users.php'); 

あなたのコントローラでは、Lのシングルトンインスタンスを取得します

class Users extends Controller{ 

    private $language; 

    public function __construct(){ 
     parent::__construct(); 
     $this->language =& Language::get_instance(); 
    } 

    public function doLogin(){ 

     if(isset($_POST['zaloguj'])){ 
      Users::error($this->language->login_error->empty); 
     } 

    } 

} 
関連する問題