PHP OOP属性常量用法
我对OOP真的很陌生。我甚至都不是新手——我不是新手。所以我想把我的伪CMS从“普通”编程转移到OOP编程系统中。因此:PHP OOP属性常量用法,php,oop,constants,Php,Oop,Constants,我对OOP真的很陌生。我甚至都不是新手——我不是新手。所以我想把我的伪CMS从“普通”编程转移到OOP编程系统中。因此: private static $dsn = DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME; 问题出在哪里?约束的使用?我不知道。我的编辑器(aptana studio)在1常量后显示错误。谢谢 编辑: 谢谢你的快速反应。我会在承包商那里做的 编辑2: 但是如果我想使用singleton呢?如何将参数传递给构造函数?问题是,当您将属性
private static $dsn = DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME;
问题出在哪里?约束的使用?我不知道。我的编辑器(aptana studio)在1常量后显示错误。谢谢
编辑:
谢谢你的快速反应。我会在承包商那里做的
编辑2:
但是如果我想使用singleton呢?如何将参数传递给构造函数?问题是,当您将属性放入初始值设定项字段时,它们必须是内联常量 你所做的不会起作用,但举例来说,这会:
private static$dsn='mysql:host=localhost;dbname=mydb'代码>
我知道,这很愚蠢,但你甚至不能使用PHP常量。你必须用纯文本来表达它
解决方法是在类的构造函数中初始化$dsn
,如下所示:
class MyClass
{
public function __construct()
{
self:: $dsn = DB_TYPE.':host='.DB_HOST.';dbname='.DB_NAME;
}
}
所有变量声明必须是完全静态的。这意味着不使用常量、变量或其他可变项
要制作任何不完全纯文本的内容,应使用构造函数。请参阅:
该声明可能包含一个初始化,但该初始化必须是一个常量值——也就是说,它必须能够在编译时进行计算,并且必须不依赖于运行时信息才能进行计算
定义类属性时不能连接字符串
文件中的示例(完整性):
+1请注意,在构造函数中设置静态成员可能没有意义,因为这样您就不能假设静态方法等在类被实例化之前会正常运行。但是php没有静态初始值设定项或任何东西,所以很难实现
<?php
class SimpleClass
{
// invalid property declarations:
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// valid property declarations:
public $var6 = myConstant;
public $var7 = array(true, false);
// This is allowed only in PHP 5.3.0 and later.
public $var8 = <<<'EOD'
hello world
EOD;
}
?>
public function __construct($db_type, $db_host, $db_name) {
self::$dsn = $db_type.':host='.$db_host.';dbname='.$db_name;
}