Пять полезных встроенных PHP констант
1. PHP_VERSION
— быстрая проверка версии PHP
Как следует из названия, этот параметр возвращает текущую версию PHP. Это полезно при проверке совместимости текущей версии PHP с вашим приложением. Константа PHP_VERSION
используется в HTTP-тестах Laravel:
public function testImageBmp()
{
$image = (new FileFactory)->image('test.bmp');
$imagePath = $image->getRealPath();
if (version_compare(PHP_VERSION, '8.3.0-dev', '>=')) {
$this->assertSame('image/bmp', mime_content_type($imagePath));
} else {
$this->assertSame('image/x-ms-bmp', mime_content_type($imagePath));
}
}
Эта константа возвращает строку наподобие этой: 8.3.0
.
2. PHP_INT_MAX
— Максимальное целочисленное значение
Если вам когда-либо требовалось найти максимальное целочисленное значение, вы, скорее всего, набирали что-то вроде 32412341241451
или искали его в интернете. Но в PHP для этого есть константа. Константа PHP_INT_MAX
используется в Laravel Lottery:
protected static function resultFactory()
{
return static::$resultFactory ?? fn ($chances, $outOf) => $outOf === null
? random_int(0, PHP_INT_MAX) / PHP_INT_MAX <= $chances
: random_int(1, $outOf) <= $chances;
}
Константа PHP_INT_MAX
вернёт максимальное целое значение — 9223372036854775807
на 64-битных системах. Это полезно при генерации случайного числа в диапазоне от 0 до максимального целочисленного значения.
3. __DIR__
— текущий каталог
Наша следующая константа отлично подходит, если вам нужно получить текущий каталог. Она используется в Laravel Model Make Command:
protected function resolveStubPath($stub)
{
return file_exists($customPath = $this->laravel->basePath(trim($stub, '/')))
? $customPath
: __DIR__.$stub;
}
Эта константа полезна, так как возвращает полный путь к текущему каталогу. Например, в моем случае:
/Users/modestasv/Projects/laraveldaily/php-constants
Теперь я могу узнать свой текущий каталог и использовать его для поиска других файлов.
4. DIRECTORY_SEPARATOR
— разделитель каталогов
Эта константа полезна, когда вам нужно получить разделитель каталогов. Обычно вы можете вставить /
в путь, но иногда это может не сработать (скорее всего, в Windows), и вы получите ошибку 500
. Она используется в Laravel Lang Publish Command:
foreach ($stubs as $from => $to) {
$to = $langPath.DIRECTORY_SEPARATOR.ltrim($to, DIRECTORY_SEPARATOR);
if ((! $this->option('existing') && (! file_exists($to) || $this->option('force')))
|| ($this->option('existing') && file_exists($to))) {
file_put_contents($to, file_get_contents($from));
}
}
Константа DIRECTORY_SEPARATOR
предотвращает ошибки и возвращает символы разделения пути, характерные для конкретной системы. В Linux/osX вернётся /
, а в Windows — \
.
5. PHP_EOL
— конец строки
Последняя в нашем списке — PHP_EOL
. Эта константа поможет вам, когда нужно добавить новую строку в создаваемый файл. Она автоматически возвращает правильный символ конца строки для вашей системы. Она встречается Laravel Controller Make Command:
protected function buildFormRequestReplacements(array $replace, $modelClass)
{
// ...
if ($storeRequestClass !== $updateRequestClass) {
$namespacedRequests .= PHP_EOL.'use '.$namespace.'\\'.$updateRequestClass.';';
}
return array_merge($replace, [
// ...
]);
}
Константа PHP_EOL
возвращает \n
в Linux/osX и \r\n
в Windows, предотвращая ошибки и обеспечивая совместимость вашего кода со всеми системами.
Ещё PHP констант?
Мы рекомендуем вам ознакомиться с документацией PHP для получения дополнительной информации о константах:
Или, если вы чувствуете себя авантюристом, вы можете запустить это в своём локальном окружении:
<?php
print_r(get_defined_constants(true));
Этот код выведет все PHP константы, доступны в вашей системе.