php eol что такое
Php eol что такое
There is no way to implement a backwards compatible __DIR__ in versions prior to 5.3.0.
A lot of notes here concern defining the __DIR__ magic constant for PHP versions not supporting the feature. Of course you can define this magic constant for PHP versions not yet having this constant, but it will defeat its purpose as soon as you are using the constant in an included file, which may be in a different directory then the file defining the __DIR__ constant. As such, the constant has lost its *magic*, and would be rather useless unless you assure yourself to have all of your includes in the same directory.
Concluding: eye catchup at gmail dot com’s note regarding whether you can or cannot define magic constants is valid, but stating that defining __DIR__ is not useless, is not!
If you’re using PHP with fpm (common in this day and age), be aware that __DIR__ and __FILE__ will return values based on the fpm root which MAY differ from its actual location on the file system.
This can cause temporary head-scratching if deploying an app where php files within the web root pull in PHP files from outside of itself (a very common case). You may be wondering why __DIR__ returns «/» when the file itself lives in /var/www/html or whathaveyou.
You might handle such a situation by having NGINX explicitly add the necessary part of the path in its fastcgi request and then you can set the root on the FPM process / server / container to be something other than the webroot (so long as no other way it could become publicly accessible).
Hope that saves someone five minutes who’s moving code to FPM that uses __DIR__.
Когда я использую константу PHP «PHP EOL»?
Я иногда вижу это в образцах кода PHP. Это обрабатывает проблемы с конечной линией DOS/Mac/Unix?
17 ответов
да PHP_EOL якобы используется для поиска символа новой строки кросс-платформенно-совместимым способом, поэтому он обрабатывает проблемы DOS/Unix.
отметим, что PHP_EOL представляет символ конечной строки для настоящее
С main/php.h PHP версии 5.6.30 и версии 7.1.1:
Как видите, PHP_EOL может быть «\r\n» (на серверах Windows) или «\n» (на что-либо другое). На PHP версии до 5.4.0RC8, было третье значение, возможное для PHP_EOL : «\r» (на серверах MacOSX). Это было неправильно и было исправлено на 2012-03-01 с 61193 ошибка.
как уже говорили другие, вы можете использовать PHP_EOL в любом виде выхода (где любой из допустимы следующие значения: HTML, XML, logs. ), где вы хотите Единой newlines (и вы должны хотеть это на мой взгляд).
Я просто хотел показать возможные значения PHP_EOL поддерживается источниками PHP, так как он еще не был показан здесь.
вы используете PHP_EOL Если вы хотите новую строку, и вы хотите быть кросс-платформенной.
Это может быть при записи файлов в файловую систему (журналы, экспорт, другие).
вы бы использовали его, если вы используете php как скрипт из cron, и вам нужно что-то вывести и отформатировать его для экрана.
вы может использовать его, если вы создаете электронное письмо для отправки, которое нуждается в форматировании.
PHP_EOL (строка) Правильный символ «конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2
эту константу можно использовать при чтении или записи текстовых файлов в файловой системе сервера.
окончания строк в большинстве случаев не имеют значения, так как большинство программ способны обрабатывать текстовые файлы независимо от их происхождения. Вы должны соответствовать своему кодексу.
Если окончания строк имеют значение, явно укажите строку окончания вместо использования константы. Например:
Я хотел бы добавить ответ, который обращается » когда не использовать его», поскольку он еще не был покрыт и может себе представить, что он используется вслепую, и никто не замечает, что есть проблема до конца линии. Некоторые из них несколько противоречат некоторым существующим ответам.
если вывод на веб-страницу в HTML, особенно текст в
нет, PHP_EOL не обрабатывает проблемы с конечной линией, потому что система, в которой вы используете эту константу, не является той же системой, в которую вы отправляете вывод.
Я бы не рекомендовал использовать PHP_EOL вообще. Unix / Linux use \n, MacOS / OS X тоже изменился с \r на \n, и в Windows многие приложения (особенно браузеры) могут отображать его правильно. В Windows также легко изменить существующий клиентский код, чтобы использовать только \n и по-прежнему поддерживать обратную совместимость: просто измените разделитель для обрезки строк от \r\n до \n и оберните его в функцию trim () like.
определение PHP_EOL заключается в том, что оно дает вам символ новой строки операционной системы, над которой вы работаете.
на практике вам это почти никогда не понадобится. Рассмотрим несколько случаев:
когда вы выводите в интернет, на самом деле нет никакого соглашения, кроме того, что вы должны быть последовательными. Поскольку большинство серверов Unixy, вы все равно захотите использовать «\n».
Если вы выводите в файл, PHP_EOL может показаться хорошая идея. Тем не менее, вы можете получить аналогичный эффект, имея буквальную новую строку внутри вашего файла, и это поможет вам, если вы пытаетесь запустить некоторые файлы в формате CRLF в Unix без clobbering существующих новых строк (как парень с двойной загрузкой системы, я могу сказать, что я предпочитаю последнее поведение)
PHP_EOL настолько смехотворно длинный, что его действительно не стоит использовать.
есть одно очевидное место, где это может быть полезно: когда вы пишете код, который преимущественно использует один строк процитировать. Его можно спорить о том, является ли:
искусство этого-быть последовательным. Проблема с сочетанием и сопоставлением » и » заключается в том, что, когда вы получаете длинные строки, вы действительно не хотите идти на охоту за тем, какой тип цитаты вы использовали.
Как и все вещи в жизни, это зависит от контекста.
В настоящее время почти все (хорошо написанные) программы принимают стандарт UNIX LF (\n) для кода новой строки, даже демоны отправителя почты (RFC устанавливает CRLF как newline для заголовков и тела сообщения).
У меня есть сайт, где logging-script записывает новую строку текста в текстовый файл после действия пользователя, который может использовать любую ОС.
использование PHP_EOL не кажется оптимальным в этом случае. Если пользователь находится на Mac OS и пишет в текстовый файл, он поставит \n. При открытии текстового файла на компьютере с windows он не показывает разрыв строки. По этой причине я использую «\r\n» вместо этого, который работает при открытии файла на любой ОС.
удобно с error_log (), если вы выводите несколько строк.
Я обнаружил, что многие отладочные операторы выглядят странно на моей установке windows, так как разработчики предположили окончания unix при разбиении строк.
вы пишете код, который преимущественно использует строки с одной кавычкой.
Я использую константу PHP_EOL в некоторых сценариях командной строки, которые мне пришлось написать. Я разрабатываю на своей локальной машине Windows, а затем тестирую на сервере Linux. Использование константы означало, что мне не нужно было беспокоиться об использовании правильного конца строки для каждой из разных платформ.
Я использую WebCalendar и обнаружил, что Mac iCal barfs при импорте сгенерированного файла ics, потому что конец строки жестко закодирован в xcal.php как «\r\n». Я вошел и заменил все вхождения PHP_EOL, и теперь iCal счастлив! Я также протестировал его на Vista, и Outlook также смог импортировать файл, хотя конец символа строки «\n».
очень раздражает ошибка!
вместо этого используйте PHP_EOL, чтобы получить результат, который вы искали.
Я предпочитаю использовать \n\r. Также я нахожусь в системе windows, и \N отлично работает в моем опыте.
поскольку PHP_EOL не работает с регулярными выражениями, и это самый полезный способ работы с текстом, то я действительно никогда не использовал его или не нуждался.
Работа с файлами в PHP часть 2 (PHP_EOL, file, scandir, is_file, is_dir, mkdir, rmdir)
Перенос строки
Чтение файла построчно в массив
Флаг FILE_IGNORE_NEW_LINES запрещает перенос в результирующий массив символов конца строки. Если флага FILE_IGNORE_NEW_LINES не будет, то в массиве окажутся строки с символами конца строки.
Второй флаг FILE_SKIP_EMPTY_LINES заставлет пропускать пустые строки файла. Поэтому пустые строки не попадут в результирующий массив.
Как и функции file_get_contents в функцию file необходимо передать полный путь к файлу в системе.
В случае ошибки функция file возвращает false.
Проверка является ли файлом или папкой
Создание папки
Удаление папки
Чтение содержимого папки
Резльутат выполнения этого скрипта будет содержать список файлов и папок в дериктории. Но только первого уровня. То есть в результат не попадут файлы и папки, которые являются вложенными.
Обратите внимание, что в примере, внутри функции GetAllFiles, происходит вызов этой же самой функции GetAllFiles. Именно поэтому функция называется рекурсивной.
В примере используется функция realpath. Она преобразует адреса, которые содержат точки «..», означающие переход к родительской папке, в полные адреса папок в системе.
Константа DIRECTORY_SEPARATOR служит для вывода разделителя в адресах файлов. К примеру, если в Linux используются «/» для разделения папок в адресах, то в Windows используется обратный слеш «\». Чтобы не задумываться над тем, какой нужно поставить, можно использовать константу DIRECTORY_SEPARATOR. В ней находится нужный разделитель для текущей системы.
Когда я использую постоянную PHP «PHP_EOL»?
Я иногда вижу это в образцах кода PHP. Означает ли этот дескриптор проблемы DOS / Mac / Unix?
Да, PHP_EOL якобы используется для поиска символа новой строки кросс-платформенным способом, поэтому он обрабатывает проблемы DOS / Unix.
Вы используете PHP_EOL когда хотите новую строку, и хотите быть кросс-платформенным.
Это может быть, когда вы пишете файлы в файловой системе (журналы, экспорт, другие).
Вы бы использовали его, если вы используете php как скрипт из cron, и вам нужно было что-то выводить и отформатировать его для экрана.
Вы можете использовать его, если вы создаете электронное письмо для отправки, которое требует некоторого форматирования.
Из main/php.h PHP версии 5.6.30 и версии 7.1.1:
Я просто хотел показать значения возможностей PHP_EOL поддерживаемые PHP-источниками, так как пока не показано здесь …
PHP_EOL (строка) Правильный символ «Конец строки» для этой платформы. Доступно с PHP 4.3.10 и PHP 5.0.2
Вы можете использовать эту константу при чтении или записи текстовых файлов в файловой системе сервера.
Окончание строк в большинстве случаев не имеет значения, так как большинство программных средств способны обрабатывать текстовые файлы независимо от их происхождения. Вы должны соответствовать вашему коду.
Если заканчивается конец строки, явным образом указываю окончания строки вместо использования константы. Например:
Я хотел бы дать ответ, в котором говорится: «Когда не использовать его», поскольку он еще не был охвачен и может представить, что он используется вслепую, и никто не замечает, что проблема доходит до конца. Некоторые из них несколько противоречат некоторым из существующих ответов.
Если вы выводите на веб-страницу в HTML, особенно текст в
Нет, PHP_EOL не обрабатывает проблемы с конечной точкой, потому что система, в которой вы используете эту константу, – это не та же система, куда вы отправляете вывод.
Существует одно очевидное место, где это может быть полезно: когда вы пишете код, который преимущественно использует одиночные кавычки. Его аргументы в пользу того,
Искусство этого должно быть последовательным. Проблема с миксами и совпадением «и» заключается в том, что когда вы получаете длинные строки, вы действительно не хотите идти на охоту за тем, какую цитату вы использовали.
Как со всеми вещами в жизни, это зависит от контекста.
Стандартная «новая линия» DOS / Windows – это CRLF (= \ r \ n), а не LFCR (\ n \ r). Если мы поместим последнее, это может привести к неожиданному (ну, по сути, виду ожидаемого!: D) поведения.
В настоящее время почти все (хорошо написанные) программы принимают стандарт UNF LF (\ n) для кода новой строки, даже демоны почтовых отправителей (RFC устанавливает CRLF как новую строку для заголовков и тела сообщения).
Вы пишете код, который преимущественно использует одиночные кавычки.
У меня есть сайт, где скрипт регистрации записывает новую строку текста в текстовый файл после действия пользователя, который может использовать любую ОС.
Использование PHP_EOL в этом случае не представляется оптимальным. Если пользователь находится в Mac OS и записывает в текстовый файл, он помещает \ n. При открытии текстового файла на компьютере Windows он не отображает разрыв строки. По этой причине я использую вместо этого «\ r \ n», который работает при открытии файла на любой ОС.
Handy с error_log (), если вы выводите несколько строк.
Я обнаружил, что многие отладочные заявления выглядят странно на моих установках Windows, поскольку разработчики предполагают окончание unix при разрыве строк.
Я использую константу PHP_EOL в некоторых сценариях командной строки, которые мне приходилось писать. Я разрабатываю свою локальную машину Windows, а затем тестирую на сервере Linux. Использование константы означало, что мне не нужно было беспокоиться об использовании правильной строки, заканчивающейся для каждой из разных платформ.
Я использую WebCalendar и обнаружил, что Mac iCal barfs импортирует сгенерированный файл ics, потому что конец строки жестко закодирован в xcal.php как «\ r \ n». Я вошел и заменил все вхождения PHP_EOL, и теперь iCal счастлив! Я также тестировал его на Vista, и Outlook смог также импортировать этот файл, даже если символ конца строки «\ n».
Очень раздражающая ошибка!
Вместо этого используйте PHP_EOL, чтобы получить результат.
Я предпочитаю использовать \ n \ r. Кроме того, я нахожусь в системе Windows, и \ n отлично работает в моем опыте.
Поскольку PHP_EOL не работает с регулярными выражениями, и это самый полезный способ работы с текстом, я никогда не использовал его или не нуждался.
Константы
Содержание
Имя константы должно соответствовать тем же правилам именования, что и другие имена в PHP. Правильное имя начинается с буквы или символа подчёркивания, за которым следует любое количество букв, цифр и символов подчёркивания. Регулярное выражение для проверки правильности имени константы выглядит так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Пример #1 Правильные и неправильные имена констант
Как и superglobals, константы доступны из любой области видимости. Константы можно использовать из любого места скрипта независимо от области видимости. Подробную информацию об областях видимости можно найти здесь.
Замечание: Начиная с PHP 7.1.0, константе класса можно объявлять видимость защищённая или закрытая, делая её доступной только в иерархической области видимости класса, в котором она определена.
User Contributed Notes 14 notes
CONSTANTS and PHP Class Definitions
public static function getMinValue ()
<
return self :: MIN_VALUE ;
>
public static function getMaxValue ()
<
return self :: MAX_VALUE ;
>
>
?>
#Example 1:
You can access these constants DIRECTLY like so:
* type the class name exactly.
* type two (2) colons.
* type the const name exactly.
#Example 2:
Because our class definition provides two (2) static functions, you can also access them like so:
* type the class name exactly.
* type two (2) colons.
* type the function name exactly (with the parentheses).
#Example 1:
$min = Constants :: MIN_VALUE ;
$max = Constants :: MAX_VALUE ;
#Example 2:
$min = Constants :: getMinValue ();
$max = Constants :: getMaxValue ();
The documentation says, «You can access constants anywhere in your script without regard to scope», but it’s worth keeping in mind that a const declaration must appear in the source file before the place where it’s used.
This is potentially confusing because you can refer to a function that occurs later in your source file, but not a constant. Even though the const declaration is processed at compile time, it behaves a bit like it’s being processed at run time.
I find using the concatenation operator helps disambiguate value assignments with constants. For example, setting constants in a global configuration file:
Lets expand comment of ‘storm’ about usage of undefined constants. His claim that ‘An undefined constant evaluates as true. ‘ is wrong and right at same time. As said further in documentation ‘ If you use an undefined constant, PHP assumes that you mean the name of the constant itself, just as if you called it as a string. ‘. So yeah, undefined global constant when accessed directly will be resolved as string equal to name of sought constant (as thought PHP supposes that programmer had forgot apostrophes and autofixes it) and non-zero non-empty string converts to True.
Warning, constants used within the heredoc syntax (http://www.php.net/manual/en/language.types.string.php) are not interpreted!
Editor’s Note: This is true. PHP has no way of recognizing the constant from any other string of characters within the heredoc block.
class constant are by default public in nature but they cannot be assigned visibility factor and in turn gives syntax error
const MAX_VALUE = 10 ;
public const MIN_VALUE = 1 ;
// This will work
echo constants :: MAX_VALUE ;
// This will return syntax error
echo constants :: MIN_VALUE ;
?>
An undefined constant evaluates as true when not used correctly. Say for example you had something like this:
if ( DEBUG ) <
// echo some sensitive data.
>
?>
If for some reason settings.php doesn’t get included and the DEBUG constant is not set, PHP will STILL print the sensitive data. The solution is to evaluate it. Like so:
if ( DEBUG == 1 ) <
// echo some sensitive data.
>
?>
Now it works correctly.
Performance of constants. PHP 7.1.10 32 bits (Opcache active, windows 10 i7-64bits) but apparently the trends is the same with the 5.x
In average, the use of DEFINE and CONST is around the same with some sightly better performance of CONST instead of DEFINE. However, using a variable is around 10-50% better than to use a constant. So, for a performance intensive task, constant is not the best option.
define(‘MYKEY’, ‘The value is from outside of class’);
class Abc<
$obj = new Abc(); // define function will call
$obj->getOutput(); // hello world! The value is from outside of class
echo TEST; // hello world! Because the constants is defined while constructor call
echo constant ( ‘echo’ ); // outputs ‘My constant value’
?>
//Syntax of define constant in php
//define(name, value, case-insensitive);
//results of all are the same
echo ‘
‘ ;
echo BOOK ;
echo ‘
‘ ;
echo book ;
When we start a constant name with space, it doesn’t produce any error.
But when we call this constant, it produce error.