我正在努力将项目转换为多语言 但是我遇到了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"];
为什么上课 并且一个类中的数组不起作用?
我不知道发生了什么
感谢您的帮助
答案 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