Php5 справочник

Содержание:

Об этой статье

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 13 человек(а). Количество просмотров этой статьи: 16 301.

Категории: Программирование

English:Check PHP Version

Español:verificar la versión de PHP

Italiano:Controllare la Versione di un Server PHP

Português:Verificar a Versão do PHP

Deutsch:Die Version von PHP überprüfen

Français:connaitre votre version de PHP

Bahasa Indonesia:Mengecek Versi PHP

Nederlands:De PHP‐versie controleren

ไทย:เช็คเวอร์ชั่น PHP

中文:查看PHP版本

Tiếng Việt:Kiểm tra phiên bản PHP

العربية:التحقق من إصدار البي إتش بي

日本語:PHPのバージョンを確認する

한국어:PHP 버전 확인 방법

हिन्दी:पीएचपी (PHP) वर्जन का पता लगाएँ (Check PHP Version)

Türkçe:PHP Sürümü Nasıl Öğrenilir

Печать

Информация о процессоре

Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.

print_r(getrusage());
/* prints
Array
(
     => 0
     => 0
     => 2
     => 3
     => 12692
     => 764
     => 3864
     => 94
     => 0
     => 1
     => 67
     => 4
     => 0
     => 0
     => 0
     => 6269
     => 0
)
*/

Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:

  • ru_oublock: количество операций блочной записи
  • ru_inblock: количество операций блочного чтения
  • ru_msgsnd: количество отправленных сообщений
  • ru_msgrcv: количество принятых сообщений
  • ru_maxrss: максимальный размер невыгружаемого набора
  • ru_ixrss: общий объем разделяемой памяти
  • ru_idrss: общий объем неразделяемых данных
  • ru_minflt: количество используемых страниц памяти
  • ru_majflt: количество ошибок отсутствия страниц
  • ru_nsignals: количество принятых сигналов
  • ru_nvcsw: количество переключений контекста процессом
  • ru_nivcsw: количество принудительных переключений контекста
  • ru_nswap: количество обращений к диску при подкачке страниц
  • ru_utime.tv_usec: время работы в пользовательском режиме (микросекунды)
  • ru_utime.tv_sec: время работы в пользовательском режиме (секунды)
  • ru_stime.tv_usec: время работы в привилегированном режиме (микросекунды)
  • ru_stime.tv_sec: время работы в привилегированном режиме (секунды)

Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.

Запутанно как-то. Вот пример:

// отдыхаем 3 секунды
sleep(3);

$data = getrusage();
echo "User time: ".
	($data +
	$data / 1000000);
echo "System time: ".
	($data +
	$data / 1000000);

/* выводит
User time: 0.011552
System time: 0
*/

Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.

Вот ещё пример:

// пройтись  10 миллионов раз
for($i=0;$i<10000000;$i++) {

}

$data = getrusage();
echo "User time: ".
	($data +
	$data / 1000000);
echo "System time: ".
	($data +
	$data / 1000000);

/* выводит
User time: 1.424592
System time: 0.004204
*/

Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.

Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:

$start = microtime(true);
// вызываем microtime каждые 3 секунды
while(microtime(true) - $start < 3) {

}

$data = getrusage();
echo "User time: ".
	($data +
	$data / 1000000);
echo "System time: ".
	($data +
	$data / 1000000);

/* выводит
User time: 1.088171
System time: 1.675315
*/

Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.

Однако следует отметить, что выведенное время может быть не точным, т.к. в данный момент времени ресурсы процессора используются и другими программами, что в результате может дать небольшую погрешность.

finally

В PHP 5.5 было добавлено ключевое слово finally, которое довольно-таки часто встречается и в других языках. С помощью finally, мы можем создать блок кода, который выполнится в конце конструкции try/catch, вне зависимости от того, было выброшено исключение или нет.

Без finally, разработчикам часто приходилось делать двойной вызов каких-то функций или дублировать код. К примеру, в следующем примере вызов функции releaseResource() происходит в нескольких местах:

<?php
function doSomething() {
    $resource = createResource();
    try {
        $result = useResource($resource);
    }
    catch (Exception $e) {
        releaseResource($resource);
        log($e->getMessage());
        throw $e;
    }
    releaseResource($resource);
    return $result;
}

Воспользуемся новым ключевым словом finally:

<?php
function doSomething() {
    $resource = createResource();
    try {
        $result = useResource($resource);
        return $result;
    }
    catch (Exception $e) {
        log($e->getMessage());
        throw $e;
    }
    finally {
        releaseResource($resource);
    }
}

Теперь функция releaseResource() будет вызвана единожды, вне зависимости от того будет выкинуто исключение или нет. Даже если в блоке try будет использоваться слово return, блок finally выполнится в любом случае.

Мёртвый код: найти и обезвредить

Меня зовут Данил Мухаметзянов, я работаю бэкенд-разработчиком в Badoo уже семь лет. За это время я успел создать и изменить большое количество кода. Настолько большое, что в один прекрасный день ко мне подошёл руководитель и сказал: «Квота закончилась. Чтобы что-то добавить, нужно что-то удалить».
Ладно, это всего лишь шутка — он такого не говорил. А жаль! В Badoo за всё время существования компании накопилось больше 5,5 млн строк логического бизнес-кода без учёта пустых строк и закрывающих скобок.
Само количество не так страшно: он лежит, есть не просит. Но два-три года назад я начал замечать, что всё чаще читаю и пытаюсь разобраться в коде, который на самом деле не работает в продакшен-окружении. То есть, по сути, мёртв.
Эту тенденцию заметил не только я. В Badoo поняли: наши высокооплачиваемые инженеры постоянно тратят время на мёртвый код.

Overview

  • Code MUST follow a “coding style guide” PSR .

  • Code MUST use 4 spaces for indenting, not tabs.

  • There MUST NOT be a hard limit on line length; the soft limit MUST be 120
    characters; lines SHOULD be 80 characters or less.

  • There MUST be one blank line after the declaration, and there
    MUST be one blank line after the block of declarations.

  • Opening braces for classes MUST go on the next line, and closing braces MUST
    go on the next line after the body.

  • Opening braces for methods MUST go on the next line, and closing braces MUST
    go on the next line after the body.

  • Visibility MUST be declared on all properties and methods; and
    MUST be declared before the visibility; MUST be declared
    after the visibility.

  • Control structure keywords MUST have one space after them; method and
    function calls MUST NOT.

  • Opening braces for control structures MUST go on the same line, and closing
    braces MUST go on the next line after the body.

  • Opening parentheses for control structures MUST NOT have a space after them,
    and closing parentheses for control structures MUST NOT have a space before.

Known Problems

  • foreach may behave differently

    • tests/lang/foreachLoop.013.phpt
    • tests/lang/foreachLoop.014.phpt
    • tests/lang/foreachLoop.015.phpt
    • ext/standard/tests/serialize/serialization_arrays_005.phpt

  • user code in error handler may cause destruction of array, element of which is currently processed

    Zend/tests/bug54265.phpt

  • _toString() may behave differently

    Zend/tests/bug60825.phpt (it was a bogus behavior in php5.6 and below)

  • Internal object constructors can’t set $this to NULL

    • ext/fileinfo/tests/bug61173.phpt

    • ext/fileinfo/tests/finfo_open_error.phpt

    • ext/pdo_mysql/tests/pdo_mysql_construct.phpt

    • ext/pdo_mysql/tests/pdo_mysql_construct_options.phpt

    • ext/intl/tests/breakiter_construct_error.phpt

    • ext/intl/tests/bug62017.phpt

    • ext/intl/tests/dateformat_construct_bad_tz_cal.phpt

    • ext/intl/tests/formatter_format2.phpt

    • ext/intl/tests/gregoriancalendar_construct_error.phpt

    • ext/intl/tests/resourcebundle_create.phpt

  • Internal object constructors can’t set $this to NULL when called indirectly — parent::__construct()

    • ext/date/tests/bug67118.phpt
    • ext/date/tests/bug67118_2.phpt
  • PDP Persistent connection handling

    • ext/pdo_mysql/tests/bug63176.phpt

    • ext/pdo_mysql/tests/pdo_mysql_pconnect.phpt

    • ext/pdo_sqlite/tests/bug43831.phpt

  • Passing scalars by reference may behave differently, because they don’t have reference counters anymore

    • Zend/tests/bug35393.phpt

    • ext/pdo_firebird/tests/pdo_005.phpt

    • ext/pdo_mysql/tests/pdo_005.phpt

    • ext/pdo_odbc/tests/pdo_005.phpt

    • ext/pdo_pgsql/tests/pdo_005.phpt

    • ext/pdo_sqlite/tests/pdo_005.phpt

  • We can’t catch situations when argument passed to internal function was modified by callback

    • ext/standard/tests/array/unexpected_array_mod_bug.phpt

    • ext/standard/tests/strings/bug55871.phpt (it was a bogus behavior in php5.6 and below)

  • Memory or resource leaks

    ext/standard/tests/http/bug60570.phpt

  • Inconsistent reference behaviour <?php $a = ‘foo’; $a = &$a; $a = array(); $a = $a; var_dump($a); ?>

    ext/wddx/tests/bug48562.phpt

  • Bug in GC

    Zend/tests/bug63635.phpt (visible with valgrind)

  • GC doesn’t destroy inner-loops

    ext/standard/tests/array/compact_variation1.phpt

  • Improper resource destruction

    ext/standard/tests/streams/bug61115.phpt (visible with valgrind)

  • Arrays are not allowed in class constants

    • Zend/tests/bug67368.phpt

    • Zend/tests/constant_expressions_self_referencing_array.phpt

  • Improperly detected resource leaks during pharcmd build

  • Memory leak if pdo persistent dbh lost connection to server

  • accepts some arguments for by-ref params that it did not previously. Reproduce code:

Overview

This specification extends, expands and replaces PSR-2, the coding style guide and
requires adherence to PSR-1, the basic coding standard.

Like PSR-2, the intent of this specification is to reduce cognitive friction when
scanning code from different authors. It does so by enumerating a shared set of rules
and expectations about how to format PHP code. This PSR seeks to provide a set way that
coding style tools can implement, projects can declare adherence to and developers
can easily relate to between different projects. When various authors collaborate
across multiple projects, it helps to have one set of guidelines to be used among
all those projects. Thus, the benefit of this guide is not in the rules themselves
but the sharing of those rules.

PSR-2 was accepted in 2012 and since then a number of changes have been made to PHP
which has implications for coding style guidelines. Whilst PSR-2 is very comprehensive
of PHP functionality that existed at the time of writing, new functionality is very
open to interpretation. This PSR, therefore, seeks to clarify the content of PSR-2 in
a more modern context with new functionality available, and make the errata to PSR-2
binding.

Previous language versions

Throughout this document, any instructions MAY be ignored if they do not exist in versions
of PHP supported by your project.

Incompatibilities (made on purpose and are not going to be fixed)

  1. PHPNG doesn’t keep original values of arguments passed to user functions, so func_get_arg() and func_get_args() will return current value of argument instead of the actually passed. The following code is going to be affected “function foo($x) { $x = 2; return func_get_arg(0);} var_dump(foo(1));”

    • tests/lang/func_get_arg.001.phpt
    • tests/lang/func_get_args.004.phpt
  2. Function parameters with duplicate name are not allowed anymore. Definitions like “function foo($x,$x) {}” will lead to compile time error “Redefinition of parameter”

    • Zend/tests/bug54013.phpt
    • Zend/tests/bug64515.phpt
  3. var_dump() may print recursive data structures differently

    Zend/tests/closure_026.phpt

  4. Passing scalars by reference may behave differently, because they don’t have reference counters anymore

Пример

Можно решать разные задачи в несколько потоков. Мне было интересно решить одну конкретную и как мне кажется весьма типовую задачу. Напомню ее еще раз. Есть пул заданий, их надо побыстрее выполнить.

Так давайте приступим. Для этого создадим провайдер данных (Threaded), он будет один и общий для всех потоков.

Для каждого потока у нас будет (Worker), где будет храниться ссылка на провайдер.

Сама обработка каждой задачи пула, (пусть это будет некая ресурсоемкая операция), наше узкое горлышко, ради которого мы и затеяли многопоточность, будет в (Threaded).

Обратите внимание, что данные из провайдера забираем в. Иначе есть вероятность часть данных обработать более 1 раза, или пропустить часть данных.
Теперь заставим все это работать с помощью

Получается довольно элегантно на мой взгляд. Этот пример я выложил на гитхаб.

Вот и все! Ну почти все. На самом деле есть то, что может огорчить пытливого читателя. Все это не работает на стандартном PHP, скомпилированным с опциями по умолчанию. Чтобы насладиться многопоточностью, надо, чтобы в вашем PHP был включен ZTS (Zend Thread Safety).

General

2.1 Basic Coding Standard

Code MUST follow all rules outlined in PSR-1.

The term ‘StudlyCaps’ in PSR-1 MUST be interpreted as PascalCase where the first letter of
each word is capitalized including the very first letter.

2.2 Files

All PHP files MUST use the Unix LF (linefeed) line ending only.

All PHP files MUST end with a non-blank line, terminated with a single LF.

The closing tag MUST be omitted from files containing only PHP.

2.3 Lines

There MUST NOT be a hard limit on line length.

The soft limit on line length MUST be 120 characters.

Lines SHOULD NOT be longer than 80 characters; lines longer than that SHOULD
be split into multiple subsequent lines of no more than 80 characters each.

There MUST NOT be trailing whitespace at the end of lines.

Blank lines MAY be added to improve readability and to indicate related
blocks of code except where explicitly forbidden.

There MUST NOT be more than one statement per line.

2.5 Keywords and Types

All PHP reserved keywords and types MUST be in lower case.

Any new types and keywords added to future PHP versions MUST be in lower case.

Short form of type keywords MUST be used i.e. instead of ,
instead of etc.

How to Download, Build, Install and Test

mkdir ~/tmp
cd ~/tmp
git clone git@git.php.net:php-src.git
cd php-src
./buildconf
./configure \
    --prefix=$HOME/tmp/usr \
    --with-config-file-path=$HOME/tmp/usr/etc \
    --enable-mbstring \
    --enable-zip \
    --enable-bcmath \
    --enable-pcntl \
    --enable-ftp \
    --enable-exif \
    --enable-calendar \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --with-curl \
    --with-mcrypt \
    --with-iconv \
    --with-gmp \
    --with-pspell \
    --with-gd \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --with-zlib-dir=/usr \
    --with-xpm-dir=/usr \
    --with-freetype-dir=/usr \
    --with-t1lib=/usr \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --with-openssl \
    --with-mysql=/usr \
    --with-pdo-mysql=/usr \
    --with-gettext=/usr \
    --with-zlib=/usr \
    --with-bz2=/usr \
    --with-recode=/usr \
    --with-mysqli=/usr/bin/mysql_config
make
make install
mkdir $HOME/tmp/usr/etc
vi $HOME/tmp/usr/etc/php.ini
max_execution_time=600
memory_limit=128M
error_reporting=0
display_errors=0
log_errors=0
user_ini.filename=
realpath_cache_size=2M
cgi.check_shebang_line=0

zend_extension=opcache.so
opcache.enable_cli=1
opcache.save_comments=0
opcache.fast_shutdown=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.use_cwd=1
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.memory_consumption=128
opcache.consistency_checks=0

Now PHP must be installed and configured. The final check.

$ sapi/cli/php -v
PHP 7.0.0-dev (cli) (built: Apr 28 2014 11:13:04) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.7.0-dev, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies

You may run synthetic benchmarks

$ sapi/cli/php Zend/bench.php
$ sapi/cli/php Zend/micro_bench.php

You may measure the performance of some web applications

$ sapi/cgi/php-cgi -T 1000 /var/www/html/wordpress/index.php > /dev/null''

You may do the same with callgrind profiler

$ valgrind --tool=callgrind --dump-instr=yes --separate-recs=1 sapi/cgi/php-cgi -T 100 /var/www/html/wordpress/index.php > /dev/null

Finally, you may run PHP as FastCGI server using CGI SAPI or FPM (it requires additional configuration)

$ PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=0 sapi/cgi/php-cgi -b /tmp/fcgi-php

I would recommend build PHP from master and phpng branches and compare their performance

Новая функциональность

Добавлена возможность загружать расширения по имени (RFC)

Раньше и в файле php.ini содержали пути до файла расширения.
Но, к сожалению, имя файла зависело от платформы. Например, в unix-подобных системах оно строилось как , где это на всех системах кроме HP-UX, где он . В Windows имя файла формируется как . Всё это порождало много ошибок.

Теперь вы можете писать:

И нужные расширения будут подгружены в зависимости от ОС.

Этот механизм будет работать при установке extension и zend_extension в ini-файле, а также как аргумент для функции .

Но абсолютные пути по-прежнему необходимо будет указывать при флаге в CLI-режиме, а также при указании абсолютного пути. Следующий пример работать не будет:

Добавлена возможность перегружать абстрактные функции (RFC)

Теперь вы сможете перегрузить абстрактные функции точно так же, как и обычные функции:

До PHP 7.2 выдавалась ошибка вида:

Предыстория:

В PHP есть два типа данных, которые содержат ключ/значение. Первый — это массивы, которые могут содержать ключи в виде строк или чисел. При этом если строка удовлетворяет правилу и она достаточно маленькая , то она конвертируется в числовой ключ.

Второй тип — это объекты, в которых недопустимы числовые ключи, и ключи конвертируются в строки.

При этом в Zend Engine они представлены в виде одной структуры .

Теперь это исправлено.

Давайте посмотрим на пару примеров:

Запрещено передавать null в качестве параметра для get_class() (RFC)

Когда null передается как параметр внутри контекста класса, поведение функции может быть весьма неожиданным:

Если содержит действительный объект, возвращенный из репозитория, результатом функции будет имя класса этого объекта.

Если содержит , выход будет иметь контекст класса, из которого вызывается , в этом случае .

Эта особенность нарушает принцип наименьшего удивления: «если необходимая функция имеет высокий коэффициент удивления, может потребоваться перепроектирование этой функции».
Теперь будет выдаваться предупреждение:
Если вы хотите сохранить старое поведение, придётся переписать код:

Вызов Count с параметром, который нельзя посчитать (RFC)

Теперь вызов с параметром, который является скалярным, null или объектом, который не реализовал интерфейс Countable, будет выдавать .

Возможность расширения типа параметра (RFC)

Одно из самых горячо обсуждаемых изменений — возможность не указывать тип параметра в наследнике. Таким образом наследник сможет принять параметр любого типа.

До PHP 7.2 возвращалась ошибка:

В пулл реквесте мнения разделились.
Одни говорили:

Другие считают, что:

Добавлена возможность указывать запятую в конце группированных неймспейсов (RFC)

Планировалось добавить такую возможность и для других списков, но на стадии голосования они были отменены и будут по-прежнему возвращать :

Реализовано семейство функций socket_getaddrinfo (RFC)

Теперь из PHP будет доступна информация из , реализованная на C. Это недостающая функция для текущей библиотеки сокетов. При работе с различными сетями было бы полезно разрешить рассказать нам, какие методы подключения/прослушивания будут наиболее подходящими с учетом набора подсказок.

Были утверждены четыре функции:

Улучшены TLS-константы (RFC)

Теперь:

  • имеет дефолтное значение
  • это алиас к
  • константа имеет дефолтное значение вместо
  • константа считается устаревшей и позже будет удалена.

В ядро PHP добавлена Libsodium (RFC)

Libsodium — современная криптографическая библиотека, которая предлагает аутентифицированное шифрование, высокоскоростную криптографию с эллиптическими кривыми и многое другое. В отличие от других криптографических стандартов (которые являются набором криптографических примитивов, например, WebCrypto), libsodium включает в себя тщательно подобранные алгоритмы, реализованные экспертами по безопасности. Это поможет избежать уязвимостей в сторонних каналах.

Добавлен алгоритм Argon2 в хешировании пароля (RFC)

Argon2 — это современный простой алгоритм, направленный на высокую скорость заполнения памяти и эффективное использование нескольких вычислительных блоков.

HashContext as Object (RFC)

Начиная с PHP5 предпочтительной структурой для хранения внутренних данных были объекты. По какой-то причине в расширении Hash для этого использовались ресурсы. Данный RFC пытается исправить недоразумение, переведя расширение Hash на хранение внутренних данных в виде объектов.

Примеры использования ресурса в качестве внутреннего представления:

Внутреннее представление преобразуется из ресурса в объект. Существующий код должен продолжить работать, если он не использует явных проверок is_resource(), эти проверки могут быть легко заменены на is_resource | is_object.

Установка

Интерпретатор PHP поставляется в нескольких вариантах для разных режимов запуска интерпретатора.

Чтобы установить PHP-CLI выполните:

sudo apt-get install php5-cli

Чтобы установить PHPCGI выполните:

sudo apt-get install php5-cgi

Чтобы установить PHP-FPM выполните:

sudo apt-get install php5-fpm

Модуль для Apache

PHP в виде модуля для Apache можно установить так:

sudo apt-get install libapache2-mod-php5

Включить модуль PHP 5 в Apache:

sudo a2enmod php5

Перезагрузить Apache:

sudo service apache2 restart

Проверка PHP

В папке /var/www (или в корне любого другого виртуального хоста) создайте файл test.php, дайте права на чтение из него всем (или хотя бы пользователю ) и запишите в него следующую строку:

<?php phpinfo(); ?>

Future Engine Optimization Ideas

  • Split IS_BOOL into IS_FALSE and IS_TRUE.

  • Introduce immutable arrays. They don’t need to be copied and might be used directly from opcache shared memory. They might be also useful for APCU.
  • Bundle libpcre with JIT support. ext/pcre must use it out of the box.

  • Think about parameter passing/receiving. Currently parameters passed to user functions are copied twice. First by SEND and then by RECV.

  • Refactor zend_parse_parameters() API (It’s slow like a hell. for ord() function it takes 90% of CPU time). See PHP RFC: Fast Parameter Parsing API

  • Convert some simple and often used internal functions into more efficient opcodes — e.g. defined(), strlen(), is_array()…

  • Replace Zend Memory Manager with xx_malloc (it must give us at least additional 2% improvement)

  • Use interned zend_strings for often used strings in C code.
  • arg_info->name should be zend_string*, but we have to initialize it from C code.

  • Think about CALL/RETURN related optimizations. Function call/return code is the main consumer of CPU time now.

  • Try to optimize VM instructions dispatching. May be use global register for “execute_data”. May be also keep “opline” in CPU register?

  • move zend_op.lineno into a separate compressed debug_info table.
  • Try to reduce amount of data copied from OPCache SHM into process memory on each request

  • Try to replace ext/json with pecl/jsond

Appendix A. Survey

In writing this style guide, the group took a survey of member projects to
determine common practices. The survey is retained herein for posterity.

A.2. Survey Legend

:
The type of indenting. = “Use a tab”, or = “number of spaces”

:
The “soft” line length limit, in characters. = not discernible or no response, means no limit.

:
The “hard” line length limit, in characters. = not discernible or no response, means no limit.

:
How classes are named. = lowercase only, = lowercase with underscore separators, = StudlyCase.

:
Does the opening brace for a class go on the line as the class keyword, or on the line after it?

:
How are class constants named? = Uppercase with underscore separators.

:
Are the , , and keywords spelled as all case, or all case?

:
How are methods named? = , = lowercase with underscore separators.

:
Does the opening brace for a method go on the line as the method name, or on the line?

:
Does the opening brace for a control structure go on the line, or on the line?

:
Is there a space after the control structure keyword?

:
Do control structures always use braces?

:
When using or , does it go on the line as the previous closing brace, or does it go on the line?

:
How many times are and indented from an opening statement?

:
Do function calls have a space after the function name and before the opening parenthesis?

:
In files containing only PHP, is the closing tag required?

:
What type of line ending is used?

:
When declaring a method, does come first, or does the visibility come first?

:
In a control structure expression, is there a space after the opening parenthesis and a space before the closing parenthesis? = , = .

:
Is there a blank line after the opening PHP tag?

:
A summary of what line the opening braces go on for classes, methods, and control structures.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector