Где посмотреть список внутренних констант php?
Есть задание константы в коде:
define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 )
Что означает число -7
? Я так понимаю - это какие-то внутренние значения php...
-7
— это код ошибки класса PclZip. Этот класс используется, например, вордпрессом. В файле wp-admin/includes/class-pclzip.php
перечислены коды ошибок, возникающие при работе с архивами:
// ----- Error codes
// -1 : Unable to open file in binary write mode
// -2 : Unable to open file in binary read mode
// -3 : Invalid parameters
// -4 : File does not exist
// -5 : Filename is too long (max. 255)
// -6 : Not a valid zip file
// -7 : Invalid extracted file size
// -8 : Unable to create directory
// -9 : Invalid archive extension
// -10 : Invalid archive format
// -11 : Unable to delete file (unlink)
// -12 : Unable to rename file (rename)
// -13 : Invalid header checksum
// -14 : Invalid archive size
Но с числами удобно работать программам, а не людям. Человеку, чтобы понять смысл кода -7
, надо рыться в документации или искать комментарии в файле.
Чтобы облегчить дело, в этом же файле заданы константы для всех кодов ошибок. Константам даны "говорящие" имена, чтобы их было легче запомнить:
define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 );
define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 );
define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 );
define( 'PCLZIP_ERR_MISSING_FILE', -4 );
define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 );
define( 'PCLZIP_ERR_INVALID_ZIP', -6 );
define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 );
define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 );
define( 'PCLZIP_ERR_BAD_EXTENSION', -9 );
define( 'PCLZIP_ERR_BAD_FORMAT', -10 );
define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 );
define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 );
define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 );
define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 );
...
Теперь, чтобы отдать нужный код ошибки, можно не вспоминать число, а воспользоваться константой. Человек пишет в коде PCLZIP_ERR_BAD_EXTRACTED_FILE
, а программа читает -7
, и все довольны, что программа поняла человека.
А чтобы человек тоже понимал программу, всё в том же файле задана функция:
function errorName($p_with_code=false)
{
$v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR',
PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL',
PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL',
PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER',
PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE',
PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG',
PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP',
PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE',
PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL',
PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION',
PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT',
PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL',
PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL',
PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM',
PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP',
...
Тут вообще интересно. Слева программист написал "говорящие константы", чтобы ему самому было понятно, что он написал. Программа заменит их на числа и будет работать с числами. А справа задано, что должна сообщать программа, когда у неё проблемы. То есть, теперь вместо -7
в журнале ошибок будет PCLZIP_ERR_BAD_EXTENSION
, и человек быстрее поймёт, что происходит.
Число "-7", внезапно, означает число "-7", не более того.
Любая константа используется в каком либо контексте. Может быть это код ошибки, может корректирующий коэффициент, может еще что-то. Если вам не нужно использовать эту константу, то и значение ее вам должно быть глубоко фиолетово(строго говоря, вам в принципе не должно быть интересно ее значение, на то она и определенная константа). Если же просто познание ради познания, то читайте документацию или вообще исходники
Конкретно в вашем случае это код ошибки.
PCLZIP_ERR_BAD_EXTRACTED_FILE:
Что-то связанное с тем, что извлеченный файл некорректен. Более подробно читайте в соответствующей документации.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Имею массив байтов, байты в массив записаны в кодировке UTF-8, соответственно нужно как-то преобразовать байты в строку такой же кодировке,...
Добрый день, пытаюсь подключиться к БД но в консоль выдаёт
Как можно отследить, какая функция обращается и что делает с каким-то элементом? У меня в проекте возник баг, суть которого заключается в том,...