我期望以下工作,但它似乎没有.
<?php
class Patterns
{
public static const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
public static const INT = "/^\d+$/";
public static const USERNAME = "/^\w+$/";
}
Run Code Online (Sandbox Code Playgroud)
我明白了 syntax error, unexpected T_CONST, expecting T_VARIABLE
Nav*_*eed 87
您可以在类中使用const,如下所示:
class Patterns {
const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
const INT = "/^\d+$/";
const USERNAME = "/^\w+$/";
}
Run Code Online (Sandbox Code Playgroud)
并且可以USERNAME像这样访问const:
Patterns::USERNAME
Run Code Online (Sandbox Code Playgroud)
Maj*_*ons 33
在PHP中,static和const是两个不同的东西.
const表示一个类常量.它们与普通变量不同,因为它们前面没有'$',并且在它们之前不能有任何可见性修饰符(public,protected,private).他们的语法:
class Test
{
const INT = "/^\d+$/";
}
Run Code Online (Sandbox Code Playgroud)
因为它们是不变的,所以它们是不可改变的.
Static表示在同一个类的对象之间共享的数据.可以修改此数据.一个示例是一个类,它可以跟踪任何时间正在播放的实例数:
class HowMany
{
private static $count = 0;
public function __construct()
{
self::$count++;
}
public function getCount()
{
return self::$count;
}
public function __destruct()
{
self::$count--;
}
}
$obj1 = new HowMany();
$obj2 = new HowMany();
echo $obj1->getCount();
unset($obj2);
echo $obj1->getCount();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ker 10
它们不是静态常量,只是常量
class Patterns
{
const EMAIL = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
const INT = "/^\d+$/";
const USERNAME = "/^\w+$/";
}
echo Patterns::EMAIL;
Run Code Online (Sandbox Code Playgroud)
Nope类常量不能标记为静态,也不能指定可见性.
http://php.net/manual/en/language.oop5.static.php