PHP If Class in Class设置保护变量

时间:2015-11-26 10:43:21

标签: php

我试图设置一个类变量依赖于PHP中的if语句,该类可用于类中的所有函数。只是设置变量工作正常,但是一旦我尝试从IF语句设置,一切都会破坏。

示例:

作品

<ImageView
  android:background="#000000"
  android:padding="1dp"
/>

不能工作

class Default_Service_NewSugar {

 protected $base_url = "http://url1";

 function test() {
   return $this->base_url;
 }
}

在课堂上这不可能吗?如果没有,我应该采取另一种方式来接近这个吗?

4 个答案:

答案 0 :(得分:0)

您应该在构造函数中编写该条件语句。而且,每次初始化变量时都不需要指定访问说明符,您可以指定一次,在初始化部分中只需指定值。并且还优化您的代码。

class Default_Service_NewSugar {
    protected $base_url = "http://url";
    function __construct() { 
        $this->base_url .= $_SERVER['APPLICATION_ENV']=="development" ? 1 : 2;
    }
    function test() {
       return $this->base_url;
    }

}

答案 1 :(得分:0)

你有很多拼写错误,这不是处理类中变量的完美方式

class Default_Service_NewSugar {

    protected $base_url;

    public function __construct() {
        $this->base_url = ($_SERVER['APPLICATION_ENV'] == "development") ? "http://url1" : "http://url2";
    }

    public function test() {
        return $this->base_url;
    }

}

答案 2 :(得分:0)

主要问题是您将过程代码放在类中。参考PHP.net文档:

  

类可以包含自己的常量,变量(称为“属性”)和函数(称为“方法”)。   php.net

我建议阅读有关如何使用OOP的PHP手册,并阅读网上提供的许多OOP教程。

如其他答案所述,您应该在类构造函数中进行初始化工作。

class Default_Service_NewSugar 
{
    protected $base_url;

    public function __construct()
    {
        $this->base_url = ($_SERVER['APPLICATION_ENV'] == "development")
            ? "http://url1"
            : "https://url2";
    }

    function test() 
    {
        return $this->base_url;
    }
}

更像OOP的方法是在配置文件中设置URL,并在启动类时将变量传递给类。

class Default_Service_NewSugar 
{
    protected $base_url;

    public function __construct($base_url)
    {
        $this->base_url = $base_url;
    }

    function test() 
    {
        return $this->base_url;
    }
}

//usage would then be:
$default_service = new Default_Service_NewSugar($url_from_configuration_file);
$default_service->test(); //outputs the given URL

答案 3 :(得分:0)

如前所述,您可以在构造函数中启动变量。实现目标的另一种方法是使用属性访问功能而不是直接对象字段访问。这样,您可以轻松添加其他条件,代码如下所示:

class Default_Service_NewSugar {

    public function __construct() {
    }

    public function getBaseURL($env = null) {
        $env = $env ? $_SERVER['APPLICATION_ENV'] : $env;
        return ($env == "development") ? "http://url1" : "http://url2";
    }
}

$obj = new Default_Service_NewSugar();
print $obj->getBaseURL();