php include_once在课堂上不起作用

时间:2016-07-13 01:18:25

标签: php

我正在努力将项目转换为多语言 但是我遇到了require_once(“../ idioma / lang.br.php”)的问题;以下

require_once("../idioma/lang.br.php");
require_once("../classe/class.usuario.dao.php");

Class UsuarioBLL 
{
    public function CadastraUsuario($campos)
    {
        $msg = array();
        // senha
        if(strlen($campos['senha']) >= 6 && strlen($campos['senha']) <= 30)
            array_push($msg,$user["TAMANHO_SENHA"]);

        if ($campos['senha'] != $campos['csenha'])
            array_push($msg, $user["SENHA_DIFERENTE"]);     

        $dao = new UsuarioDAO();

in

array_push($msg,$user["TAMANHO_SENHA"]);

数组变量

$user["TAMANHO_SENHA"] 

null

这是一个包含

<?php
//cadastro usuario
$user = array();
$user["PREENCHER_TUDO"]  = "Por favor preencha todos os campos.";
$user["TAMANHO_SENHA"]   = "Senha deve conter entre 6 a 30 digitos.";

如果我做var_dump($ user);上课前

require_once("../idioma/lang.br.php");
require_once("../classe/class.usuario.dao.php");
var_dump ($ user);
Class UsuarioBLL 
{
    public function CadastraUsuario($campos)
    {
        $msg = array();
        // senha
        if(strlen($campos['senha']) >= 6 && strlen($campos['senha']) <= 30)
            array_push($msg,$user["TAMANHO_SENHA"]);

        if ($campos['senha'] != $campos['csenha'])
            array_push($msg, $user["SENHA_DIFERENTE"]);       

        $dao = new UsuarioDAO();

系统打印

array(2) { 
["PREENCHER_TUDO"]=> string(35) "Por favor preencha todos os campos." ["TAMANHO_SENHA"]=> string(39) "Senha deve conter entre 6 a 30 digitos." 
} 

require_once(“../ classe / class.usuario.dao.php”);

 $dao = new UsuarioDAO();

其工作

我做了一个测试 我创建了

class UserLang {
    public $user;
     function __construct() {
         $this->user["PREENCHER_TUDO"] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.";
    }
}

现在可以使用了

$e = new UserLang();
echo $e->user["PREENCHER_TUDO"];

为什么上课 并且一个类中的数组不起作用?

我不知道发生了什么

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你的班级看不到外面的东西。如果您的意思是让该类处理特定的用户数据集,则应将其设为类属性。这是最简单的方法:

Class UsarioBLL{
    public $user; //needs to be set before other functions can use it
}

创建对象后,设置用户

$usario = new UsarioBLL();
$usario->user = $user; //now  the class can see the user data!

完成此操作后,您的CastradaUsario功能会看到数据。

  

为什么班级工作和班级中的数组不起作用?

请注意,您的require_once("../idioma/lang.br.php")会在类定义上方插入$user数组。您的问题与variable scope有关。当您在类之外定义数组时,类成员无法看到它

$user = [...];
Class UsarioBLL{
// $user is undefined here.
}

要获得可见性,您需要传递数据并将其存储在类变量中。最简单的方法是我上面的原始答案。另一种方法是将数据传递给类构造函数:

Class UsarioBLL{
    private $user;
    __construct($input_data){this->user = $input_data}
}
创建新对象时会调用

__construct。所以像这样创建你的新对象:

$usario = new UsarioBLL($user); //will call __construct and pass $user