【问题标题】:PHP variables are shown undefined [duplicate]PHP变量显示未定义[重复]
【发布时间】:2014-05-08 12:06:31
【问题描述】:
<?php
class roxy
{

   function sam()
   {
       $name;
       $class;
       $age;
        echo $name;
        echo $class;
        echo $age;
   }

}
$kush= new roxy();
$kush->name="sachin";
$kush->class=12;
$kush->age=21;
$kush->sam();

?>

这里的变量是本地声明的,当变量的值通过对象设置时,然后我调用该函数,它在结果屏幕中显示未定义。

【问题讨论】:

  • 这不是 oop 的工作原理
  • 请不要回答这样的问题。它没有显示任何尝试的努力,而且 OP 显然对 PHP/编程一无所知。

标签: php


【解决方案1】:

这不是 oop 的工作方式:这是您尝试实现的工作示例:

<?php
class roxy
{
   public $name;
   public $class;
   public $age;

   public function sam()
   {
       echo $this->name;
       echo $this->class;
       echo $this->age;
   }

}

$kush= new roxy();
$kush->name="sachin";
$kush->class=12;
$kush->age=21;
$kush->sam();

?>

【讨论】:

  • 感谢它的工作......
【解决方案2】:

那是因为你的函数sam() 没有引用你之前声明的变量作为你的对象的变量。取而代之的是 echos 你刚刚定义的变量你的函数sam(),当然是未定义的。

这应该可行:

class Roxy {
   public $name;
   public $xclass;
   public $age;

   public function sam() {
        echo $this -> name;
        echo $this -> xclass;
        echo $this -> age;
   }

}

$kush= new Roxy();

$kush->name="sachin";
$kush->xclass=12;
$kush->age=21;

$kush->sam(); // > sachin > 12 > 21

+ class 是 php 中的保留关键字。你不应该使用它。例如,请改用 xclass。

【讨论】:

  • class 不是保留的命名空间,而是保留的关键字。将其用作属性并不是最好的想法,这很公平,但如果您这样做也不会造成问题
  • 感谢有关 class 是保留关键字而不是保留命名空间的提示。我仍然认为使用它不是一个好主意。
  • @EliasVanOotegem 虽然“class”是保留关键字,但仍然可以使用。这是我用 PHP 5.4 测试的。然而正如你所说,这不是最好的想法,我同意。
  • @Fred-ii-:这正是我所说的:“如果你这样做不会造成问题”。但这无关紧要,因为我们都同意这样做是个坏主意
  • @EliasVanOotegem 确实如此。我回避使用任何类型的保留字,无论是使用类、SQL、PHP 等。最好不要这样做。干杯
【解决方案3】:

你需要使用$this 来引用一个类自己的属性。要获得您希望将类更改为如下所示的行为:

class roxy
{
    public $name;
    public $class;
    public $age;
    public function sam()
    {
        echo $this->name;
        echo $this->class;
        echo $this->age;
    }
}

【讨论】:

    【解决方案4】:

    1- 您的变量是在函数内部定义的,而不是在类中定义的!

    2- 它们应该被声明为公共(以及函数)

    3- 你应该使用 $this 在函数内部调用它们

    【讨论】:

      猜你喜欢
      • 2022-12-31
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多