2016-11-30 18 views
0

我的代码有些问题。我想在方法调用对象数组值,BU具有错误:调用方法PHP中的对象数组

说明:未定义变量:login_error在 C:\ XAMPP \ htdocs中\前端\控制器\ Users.php第27行

注意:试图让非对象的财产 C:\ XAMPP \ htdocs中\前端\控制器\ Users.php第27行

这是我的控制器Users.php

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>'; 
    } 

而且装载机 - 我加载我所有的controlers在一个文件中。

<?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 -which-variables-are-accessible-from-where-and) –

+0

如何在Controller类中包含我所有方法的语言文件? 我不想将所有方法中的语言文件逐个包含在内。 –

回答

0

你可以写一个语言库和来自世界各地像这样得到它的实例(辛格尔顿):

在您的前端/库/ language.php:

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; 

    } 

在您的ONE文件在这里装载每一个类:

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'); 

而在你的控制器获得升Singleton实例这样的语言库:

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); 
     } 

    } 

}