当我尝试分配获取的值时,我试图从数据库中获取一些数据以JSON文件形式显示
注意:未定义的变量:第24行的C:\ wamp64 \ www \ wsTest \ usuario \ read.php中的ID
这是用户类别:
<?php
Class Usuario{
private $conn;
private $tabla="usuario";
public $id;
public $nombre;
public $fecha;
public function __construct($db){
$this->conn=$db;
$this->id="";
$this->nombre="";
$this->fecha="";
}
//this is my attempt of initializing the variables
// read products
function read(){
// select all query
$query = "SELECT (usrNombre) FROM usuario";
// prepare query statement
$stmt = $this->conn->prepare($query);
// execute query
$stmt->execute();
return $stmt;
}
}
这是usuario / read.php文件,这是我正在运行的文件
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
include_once '../config/connect.php';
include_once '../objects/usuario.php';
//i include usuario.php
$database = new Database();
//database class defined in config/connect.php
$db=$database->getConnection();
$Usuario=new Usuario($db);
//Here I initialize the user class from /objects/usuario.php
$stmt = $Usuario->read();
$num = $stmt->rowCount();
if($num>0){
$listaUsrs=array();
$listaUsrs["registros"]=array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
extract($row);
$usuario_item=array(
"usrId" => $id,
//"usrNombre"=> $nombre,
//!empty($_POST['usrNombre']) ? $_POST['usrNombre '] : ''/*"usrNombre"*/ => $nombre,
//"usrFecha" => $fecha,
);
array_push($listaUsrs["registros"], $usuario_item);
}
echo json_encode($listaUsrs);
}
else{
echo json_encode(
array("message" => "No usrs found.")
);
}
?>
该方法是否不知道应该使用Usuario对象中定义的变量,还是我没有正确初始化它?
编辑:
我发现我的问题是{id}在$usuario_item=array("usrId" => $id, ...
中是未定义的,因为我必须将其切换,$ id必须是$ usrId,而“ usrId”必须只是“ id”,$ usrId是指该列在我的数据库中,“ id”指的是Usuario类中的变量
答案 0 :(得分:1)
关键字public
使对象属性可供公众访问。它不会以某种方式神奇地使该属性成为全局名称空间的一部分。
$this->id
指代属性id
内{em> 类型Usuario
的实例。这意味着您需要在该行中将其称为$Usuario->id
。
不过,常见的做法是为此类属性定义“获取器”并将其保留为私有,因此$Usuario->getId()
。这使您的内部实现对外界隐藏,这是OOP的目的之一:
<?php
Class Usuario {
// ...
private $id;
// ...
public getId() { return $this->id; }
// ...
}
答案 1 :(得分:0)
如果您尝试访问所创建的Usuario对象上的public id属性,请执行以下操作:
$Usuario->id;
答案 2 :(得分:0)
使用公共变量,可以使用(new MyClass)-> variableName。 对于静态公共变量,请使用MyClass :: variableName。 使用受保护的变量,将getter函数用作(new MyClass)-> getVariableName();。 阅读文档:http://php.net/manual/en/language.oop5.php