我收到了这个错误,我看不出我做错了什么。我已经对其他类中的其他对象做了同样的事情,这些对象以完全相同的方式构建,我不明白为什么我现在会出现这个错误。
我创建对象的代码是这样的:
$consulta2 = "SELECT * FROM TiposDireccion WHERE Cliente_CIF='$cif' and Direccion_Direccion='$direccion' and Direccion_CP=$cp ";
echo($consulta2."</br>");
if ($resultado2 = $conexion->query($consulta2)){
while($fila2 = $resultado2->fetch_object()){
$tipodireccion78=$fila2->TipoDireccion_Tipo;
//we see here that the select is returning a correct string with a correct value
echo($tipodireccion78);
//we try to instantiate and it fails =(
$unTipoDireccion=TipoDireccion::constructor1($tipodireccion78);
这是TipoDireccion:类
<?php
class TipoDireccion{
private $tipo;
private $descripcion;
//Construct auxiliar
function __construct() {
}
//Constructor 1 : completo
function constructor1($tipo) {
$tipoDireccion = new TipoDireccion();
$tipoDireccion->tipo = $tipo;
return $tipoDireccion;
}
function ponTipo($tipo) {
$this->tipo = $tipo;
}
function devuelveTipo() {
return $this->tipo;
}
function ponDescripcion($descripcion) {
$this->descripcion = $descripcion;
}
function devuelveDescripcion() {
return $this->descripcion;
}
}
?>
提前非常感谢!
不知道这是否仍然与您有关,但以防其他人来这里寻求答案。问题出在这个功能上:
function constructor1($tipo) {
$tipoDireccion = new TipoDireccion();
$tipoDireccion->tipo = $tipo;
return $tipoDireccion;
}
因为在类定义中,您定义了private $tipo;
,然后尝试将$tipoDireccion->tipo
分配给通过函数传递的内容。然而,您并不是试图通过类的作用域来访问该变量,而是试图从类的"public"作用域来分配它。
对此的修复有两个选项,第一个选项是将private $tipo;
更改为public $tipo;
。但这不是一个好的解决方案,因为你有一个分配函数
相反,使用你制作的函数,这会使函数看起来像:
function constructor1($tipo) {
$tipoDireccion = new TipoDireccion();
$tipoDireccion->ponTipo($tipo);
return $tipoDireccion;
}
这就是你需要从公共范围访问它的方式,这是你在启动一个新的范围后所做的。
function constructor1($tipo) {}
应该是
static function constructor1($tipo) {}