Обележани функции
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Обележани функции
Референца за `migration85.deprecated.php` со подобрена типографија и навигација.
Обележани функции
PHP јадро
Промени во ракувачот за кориснички излез
Обидот за производство на излез (на пр. со echo) во ракувачот за кориснички излез е застарен. Предупредувањето за застареност ќе го заобиколи ракувачот што го произведува излезот за да се осигура дека е видлив; ако има вгнездени ракувачи за излез, следниот сè уште ќе се користи.
Неканонски имиња на кастинг
Неканонски имиња на кастинг (boolean),
(integer), (double)Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во (binary) се застарени, користете (bool), (int),
(float)Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во (string) respectively.
Завршување на изјавите за случај со точка-запирка
Завршувањето на изјавите за случај со точка-запирка наместо со двоеточие е застарено.
Операторот со обратни апострофи
Операторот со обратни апострофи како алијас за shell_exec() е укинат.
Враќање на null од __debugInfo()
Враќање null from
__debugInfo()
е застарено. Вратете празен список наместо тоа.
INI директивата report_memleaks
На report_memleaks INI директивата е застарена.
Повторно декларирање на константа
Повторното декларирање на константа е застарено. Имајте предвид дека ова веќе генерираше предупредување и ќе продолжи да го прави тоа.
Проблеми со врзување на затворање
Следниве проблеми со врзување на затворање, кои веќе емитуваат
E_WARNING, сега се застарени:
- Врзување инстанца со статичко затворање.
- Врзување методи со објекти што не се инстанци на класата (или подкласата) во која е дефинирана методата.
- Unbinding $this from a method.
- Unbinding $this from a closure that uses `$this`.
- Binding a closure to the scope of an internal class.
- Поврзување на затворање со опсегот на внатрешна класа.
Преобврзување на опсегот на затворање создадено од функција или метод.
На __sleep() and __wakeup() Волшебни методи __sleep() и __wakeup() __serialize() and __unserialize() волшебните методи се меко депрецирани. The
волшебни методи треба да се користат наместо тоа, или истовремено ако е потребна компатибилност со PHP 7.
Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: null Користење на null како офсет на низа array_key_exists()
како офсет на низа или при повикување
сега е депрецирано. Наместо тоа треба да се користи празен стринг.
Зголемување на не-нумерички низи str_increment() функцијата треба да се користи.
Зголемувањето на не-нумерички низи сега е депрецирано. Наместо тоа, the
register_argc_argv INI директива $_SERVER['argc'] and $_SERVER['argv']
Изведување register_argc_argv=0 од стринг за прашање за не-CLI SAPIs е депрецирано. Конфигурирајте
$_GET or $_SERVER['QUERY_STRING']
и префрлете се на било кој од
cURL
На curl_close() за пристап до информациите, откако ќе се потврди дека употребата е безбедна. CurlHandle функцијата е депрецирана, бидејќи
На curl_share_close() за пристап до информациите, откако ќе се потврди дека употребата е безбедна. CurlShareHandle функцијата е депрецирана, бидејќи
Датум
На DATE_RFC7231 and
DateTimeInterface::RFC7231 објектите се ослободуваат автоматски.
FileInfo
На finfo_close() константите се депрецирани. Ова е затоа што поврзаната временска зона се игнорира и секогаш се користи GMT. finfo функцијата е депрецирана, бидејќи
На $context Овие константи се користат за
finfo_buffer() функцијата е депрецирана. Како
GD
На imagedestroy() за пристап до информациите, откако ќе се потврди дека употребата е безбедна. GdImage функцијата е депрецирана, бидејќи
Хеш
На MHASH_* константите се застарени.
Меѓународен
На intl.error_level INI поставката е застарена. Грешките треба рачно да се проверуваат или да се овозможат исклучоци со користење на intl.use_exceptions INI поставката.
LDAP
Специфичните повици и константи на Oracle Instant Client се застарени. Список на засегнати повици:
- ldap_connect() со поддршка за паричник
- ldap_connect_wallet()
GSLC_SSL_NO_UATHGSLC_SSL_ONEWAY_UATHGSLC_SSL_TWOWAY_UATH
MySQLi
На mysqli_execute() алијас функцијата е застарена. Користете mysqli_stmt_execute() instead.
OpenSSL
На $key_length параметар за
openssl_pkey_derive() е застарен. Ова е затоа што или се игнорира, или го скратува клучот, што може да биде безбедносен ризик.
PDO
На "uri:" DSN шемата е застарена поради безбедносни грижи со DSN што доаѓаат од далечински URI.
Специфичните константи на драјверот во PDO класата се застарени. Список на засегнати константи и нивна замена:
PDO::DBLIB_ATTR_CONNECTION_TIMEOUT=>Pdo\Dblib::ATTR_CONNECTION_TIMEOUTPDO::DBLIB_ATTR_QUERY_TIMEOUT=>Pdo\Dblib::ATTR_QUERY_TIMEOUTPDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER=>Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIERPDO::DBLIB_ATTR_VERSION=>Pdo\Dblib::ATTR_VERSIONPDO::DBLIB_ATTR_TDS_VERSION=>Pdo\Dblib::ATTR_TDS_VERSIONPDO::DBLIB_ATTR_SKIP_EMPTY_ROWSETS=>Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETSPDO::DBLIB_ATTR_DATETIME_CONVERT=>Pdo\Dblib::ATTR_DATETIME_CONVERTPDO::FB_ATTR_DATE_FORMAT=>Pdo\Firebird::ATTR_DATE_FORMATPDO::FB_ATTR_TIME_FORMAT=>Pdo\Firebird::ATTR_TIME_FORMATPDO::FB_ATTR_TIMESTAMP_FORMAT=>Pdo\Firebird::ATTR_TIMESTAMP_FORMATPDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>Pdo\Mysql::ATTR_USE_BUFFERED_QUERYPDO::MYSQL_ATTR_LOCAL_INFILE=>Pdo\Mysql::ATTR_LOCAL_INFILEPDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY=>Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORYPDO::MYSQL_ATTR_INIT_COMMAND=>Pdo\Mysql::ATTR_INIT_COMMANDPDO::MYSQL_ATTR_MAX_BUFFER_SIZE=>Pdo\Mysql::ATTR_MAX_BUFFER_SIZEPDO::MYSQL_ATTR_READ_DEFAULT_FILE=>Pdo\Mysql::ATTR_READ_DEFAULT_FILEPDO::MYSQL_ATTR_READ_DEFAULT_GROUP=>Pdo\Mysql::ATTR_READ_DEFAULT_GROUPPDO::MYSQL_ATTR_COMPRESS=>Pdo\Mysql::ATTR_COMPRESSPDO::MYSQL_ATTR_DIRECT_QUERY=>Pdo\Mysql::ATTR_DIRECT_QUERYPDO::MYSQL_ATTR_FOUND_ROWS=>Pdo\Mysql::ATTR_FOUND_ROWSPDO::MYSQL_ATTR_IGNORE_SPACE=>Pdo\Mysql::ATTR_IGNORE_SPACEPDO::MYSQL_ATTR_SSL_KEY=>Pdo\Mysql::ATTR_SSL_KEYPDO::MYSQL_ATTR_SSL_CERT=>Pdo\Mysql::ATTR_SSL_CERTPDO::MYSQL_ATTR_SSL_CA=>Pdo\Mysql::ATTR_SSL_CAPDO::MYSQL_ATTR_SSL_CAPATH=>Pdo\Mysql::ATTR_SSL_CAPATHPDO::MYSQL_ATTR_SSL_CIPHER=>Pdo\Mysql::ATTR_SSL_CIPHERPDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT=>Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERTPDO::MYSQL_ATTR_SERVER_PUBLIC_KEY=>Pdo\Mysql::ATTR_SERVER_PUBLIC_KEYPDO::MYSQL_ATTR_MULTI_STATEMENTS=>Pdo\Mysql::ATTR_MULTI_STATEMENTSPDO::ODBC_ATTR_USE_CURSOR_LIBRARY=>Pdo\Odbc::ATTR_USE_CURSOR_LIBRARYPDO::ODBC_ATTR_ASSUME_UTF8=>Pdo\Odbc::ATTR_ASSUME_UTF8PDO::ODBC_SQL_USE_IF_NEEDED=>Pdo\Odbc::SQL_USE_IF_NEEDEDPDO::ODBC_SQL_USE_DRIVER=>Pdo\Odbc::SQL_USE_DRIVERPDO::ODBC_SQL_USE_ODBC=>Pdo\Odbc::SQL_USE_ODBCPDO::PGSQL_ATTR_DISABLE_PREPARES=>Pdo\Pgsql::ATTR_DISABLE_PREPARESPDO::SQLITE_ATTR_EXTENDED_RESULT_CODES=>Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODESPDO::SQLITE_ATTR_OPEN_FLAGS=>Pdo\Sqlite::OPEN_FLAGSPDO::SQLITE_ATTR_READONLY_STATEMENT=>Pdo\Sqlite::ATTR_READONLY_STATEMENTPDO::SQLITE_DETERMINISTIC=>Pdo\Sqlite::DETERMINISTICPDO::SQLITE_OPEN_READONLY=>Pdo\Sqlite::OPEN_READONLYPDO::SQLITE_OPEN_READWRITE=>Pdo\Sqlite::OPEN_READWRITEPDO::SQLITE_OPEN_CREATE=>Pdo\Sqlite::OPEN_CREATE
Специфичните методи на драјверот во PDO класата се застарени. Список на засегнати методи и нивна замена:
- Поврзување на затворање со опсегот на внатрешна класа. => Pdo\Pgsql::copyFromArray()
- PDO::pgsqlCopyFromArray() => PDO::pgsqlCopyFromFile()
- Pdo\Pgsql::copyFromFile() => PDO::pgsqlCopyToArray()
- Pdo\Pgsql::copyToArray() => PDO::pgsqlCopyToFile()
- Pdo\Pgsql::copyToFile() => PDO::pgsqlGetNotify()
- Pdo\Pgsql::getNotify() => PDO::pgsqlGetPid()
- Pdo\Pgsql::getPid() => PDO::pgsqlLOBCreate()
- Pdo\Pgsql::lobCreate() => PDO::pgsqlLOBOpen()
- Pdo\Pgsql::lobOpen() => PDO::pgsqlLOBUnlink()
- Pdo\Pgsql::lobUnlink() => PDO::sqliteCreateAggregate()
- PDO::sqliteCreateCollation() => (PHP 5 >= 5.3.11, PHP 7, PHP 8)
- PDO::sqliteCreateFunction() => (PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)
PDO_PGSQL
Константите поврзани со состојбите на трансакцијата се укинати бидејќи оваа функција е недостапна со PDO:
PDO::PGSQL_TRANSACTION_IDLEPDO::PGSQL_TRANSACTION_ACTIVEPDO::PGSQL_TRANSACTION_INTRANSPDO::PGSQL_TRANSACTION_INERRORPDO::PGSQL_TRANSACTION_UNKNOWN
Рефлексија
На setAccessible() методите на разни објекти за Рефлексија се укинати, бидејќи тие повеќе немаат ефект.
Повикување ReflectionClass::getConstant() за константи кои не постојат е укината.
Повикување ReflectionProperty::getDefaultValue() за својства без стандардни вредности е укината.
SPL
Отпишувањето на сите автолодери со поминување на spl_autoload_call() функцијата како аргумент за враќање на повик до spl_autoload_unregister() е укината. Наместо тоа, ако ова е потребно, треба да се итерира над вратената вредност од spl_autoload_functions() и да се повика spl_autoload_unregister() на секоја вредност.
На SplObjectStorage::contains(), SplObjectStorage::attach()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во SplObjectStorage::detach() методите се укинати во корист на SplObjectStorage::offsetExists(), SplObjectStorage::offsetSet()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во SplObjectStorage::offsetUnset() respectively.
Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: ArrayObject and ArrayIterator со објекти е укината.
Стандардно
На socket_set_timeout() алијас функцијата е застарена. Користете stream_set_timeout() instead.
Поминување null to readdir(),
rewinddir()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во closedir()
за користење на последната отворена директориум е укината. Наместо тоа, обезбедете ја последната отворена директориум експлицитно.
Поминувањето на цели броеви надвор од интервалот [0, 255] to chr()
е сега укинато. Ова е затоа што бајт може да држи само вредност во овој интервал.
Поминувањето на стринг што не е еден бајт до ord() е сега укинато, ова укажува на грешка.
Локално претходно дефинираната променлива $http_response_header е застарена. Наместо тоа, треба да се повика http_get_last_response_headers() function.
XML
На xml_parser_free() за пристап до информациите, откако ќе се потврди дека употребата е безбедна. XMLParser функцијата е депрецирана, бидејќи