在方法PHP中调用对象数组

时间:2016-11-30 09:52:51

标签: php arrays oop

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

  

注意:未定义的变量:login_error in   第27行的C:\ xampp \ htdocs \ frontend \ controller \ Users.php

     

注意:尝试获取非对象的属性   第27行的C:\ xampp \ htdocs \ frontend \ controller \ Users.php

这是我的控制器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>';
    }

加载器 - 我将所有控制器加载到一个文件中。

<?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 个答案:

答案 0 :(得分:0)

您可以编写一个语言库并从其他地方获取它的实例(Singleton),如下所示:

在你的前端/ libraries / 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);
        }

    }

}