📜  尝试在 bool 上读取属性“名称” - PHP (1)

📅  最后修改于: 2023-12-03 15:09:40.023000             🧑  作者: Mango

尝试在 bool 上读取属性“名称” - PHP

问题描述

在 PHP 中,bool 类型实际上是一个整数类型,其值为 true 或 false。然而,当我们尝试在 bool 类型上读取属性“名称”时,就会出现以下错误:

Notice: Trying to get property ‘name’ of non-object in file.php on line 10
错误分析

错误分析很明显,我们尝试在一个布尔类型的变量上访问属性“名称”,然而在 PHP 中只有对象才有属性。因此在访问对象属性时需要使用 $\rightarrow$ 运算符,但是在布尔类型上使用 $\rightarrow$ 运算符时会被视为一个错误。

解决方案

有两种方法可以解决这个问题:

方法一:使用数组来代替对象

在 PHP 中,数组可以视为一种键值对存储方式的对象,可以访问它们的键值来获取相应的值。因此,如果我们尝试访问一个布尔类型的“名称”属性,可以将其存储在一个数组中,然后使用相应的键值来访问它。代码如下:

$boolArray = array("name" => true);
echo $boolArray["name"];
方法二:使用类和对象

在 PHP 中,我们可以创建类和对象来封装代码。因此,如果我们需要在布尔类型上访问属性,可以创建一个类并在类中定义一个用于获取属性值的方法。代码如下:

class myBool {
   private $name;
   
   public function setName($name) {
      $this->name = filter_var($name, FILTER_SANITIZE_STRING);
   }
   
   public function getName() {
      return $this->name;
   }
}

$boolObject = new myBool();
$boolObject->setName(true);
echo $boolObject->getName();
总结

在 PHP 中,布尔类型是一个特殊的数据类型,当我们需要访问它们的属性时可以使用数组或类和对象。使用数组的方法比较简单但是不够灵活,使用类和对象可以更好的封装代码和数据。