PHP如何将默认值设置为类中的变量?

时间:2015-01-20 01:13:34

标签: php class variables

class A{
    public $name;

    public function __construct() {
      $this->name = 'first';
    }

    public function test1(){
        if(!empty($_POST["name"]))
        {
            $name = 'second';
        }
            echo $name;
    }

$F = new A;
$F->test1();

为什么我们没有获得first以及如何仅为A类设置正确的默认值变量$name

如果有任何帮助,我将不胜感激。

3 个答案:

答案 0 :(得分:6)

您可以使用构造函数来设置初始值(或者几乎可以做任何事情),因为您需要这样:

class example
{

    public $name;

    public function __construct()
    {
        $this->name="first";
    }

}

然后您可以在其他功能中使用这些默认值。

class example
{

    public $name;

    public function __construct()
    {
        $this->name="first";
    }

    public function test1($inputName)
    {
        if(!empty($inputName))
        {
            $this->name=$inputName;
        }
        echo "The name is ".$this->name."\r\n";
    }

}

$ex=new example();
$ex->test1(" "); // prints first.
$ex->test1("Bobby"); // prints Bobby
$ex->test1($_POST["name"]); // works as you expected it to.

答案 1 :(得分:1)

您有两个选择来设置类属性的默认值:

选项1:在参数级别设置。

class A 
{
    public $name = "first";

    public function test1()
    {
        echo $this->name;
    }
}

$f = new A();
$f->test1();

选项2:每次创建新实例时,魔术方法__construct()始终会执行。

class A 
{
    public $name;

    public function __construct() 
    {
        $this->name = 'first';
    }

    public function test1()
    {
        echo $this->name;
    }
}

$f = new A();
$f->test1();

答案 2 :(得分:0)

使用isset()为可能已具有值的变量指定默认值:

if (! isset($cars)) {
    $cars = $default_cars;
}

使用三元(a ? b : c)运算符为新变量a(可能是默认值)赋值:

$cars = isset($_GET['cars']) ? $_GET['cars'] : $default_cars;