Я ожидал, что следующее будет работать, но это не кажется.
<?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+$/";
}
Я добираюсь syntax error, unexpected T_CONST, expecting T_VARIABLE
Вы можете использовать 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+$/";
}
И можете получить доступ к USERNAME
const, как это:
Patterns::USERNAME
Это не статические константы, а просто константы
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;
В PHP статика и константа - это две разные вещи.
const обозначает константу класса. Они отличаются от обычных переменных тем, что перед ними нет символа «$» и не может быть никаких модификаторов видимости (общедоступных, защищенных, закрытых). Их синтаксис:
class Test
{
const INT = "/^\d+$/";
}
Поскольку они постоянны, они неизменны.
Статические обозначают данные, которые используются совместно объектами одного класса. Эти данные могут быть изменены . Примером может служить класс, который отслеживает, сколько экземпляров находится в игре одновременно:
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();
Константы класса Nope не могут быть помечены как статические или наделены видимостью.
Вам не нужно объявлять их статическими или публичными. Посмотрите примеры в руководстве:
Как вы пытаетесь получить доступ к константам?
Я считаю, что это сработает:
echo Patterns::$EMAIL; //shows "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-...."
Если вы просто объявите его статическим.