Last active
March 10, 2020 19:10
-
-
Save mikkabond/dd9364d6f7c95caf554001404bd5d477 to your computer and use it in GitHub Desktop.
php tips and snippets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//подробный форматированный вывод переменных | |
$name_of_var = var_value; | |
var_dump($name_of_var); | |
//установить runtime настройку на время выполнения скрипта | |
ini_set | |
//настройка xdebug для vscode при использовании OpenServer | |
1) редактируем/раскомментируем в C:\OSPanel\userdata\config\PHP_7.1-x64_php.ini следующие строки: | |
zend_extension = php_xdebug.dll | |
[xdebug] | |
xdebug.default_enable = on | |
xdebug.idekey = "VSCODE" | |
xdebug.gc_stats_output_dir = "%sprogdir%/userdata/temp/xdebug" | |
xdebug.profiler_enable = 1 | |
xdebug.profiler_enable_trigger = 1 | |
xdebug.profiler_output_dir = "%sprogdir%/userdata/temp/xdebug" | |
xdebug.profiler_output_name = "cachegrind.out.%p" | |
xdebug.remote_autostart = on | |
xdebug.remote_enable = on | |
xdebug.remote_handler = "dbgp" | |
xdebug.remote_host = "127.0.0.1" | |
xdebug.remote_log = "%sprogdir%/userdata/temp/xdebug/xdebug.log" | |
xdebug.remote_port = 9000 | |
xdebug.trace_output_dir = "%sprogdir%/userdata/temp/xdebug" | |
2) перезапускаем OpenServer | |
3) в VSCODE на панели отладки выбираем профиль "Listen for XDebug", ставим брейкпоинт в нужном месте кода | |
4) обновляем требуемую страницу сайта и вываливаемся в vscode на брейкпоинте | |
p.s. еще на эту тему https://www.codewall.co.uk/debug-php-in-vscode-with-xdebug/ | |
// Добавлять в отчет все ошибки PHP | |
error_reporting(-1); | |
// Скрыть все ошибки | |
error_reporting(0); | |
//добавить HTTP заголовок (в примере указана кодировка выводимого в браузер текста) в самом наачале скрипта (до любого вывода) | |
header("Content-type: text/html; charset=utf-8"); | |
//перехват буфера вывода для вывода информации, например, от phpinfo | |
ob_start( ); | |
phpinfo( ); | |
$output = ob_get_clean( ); | |
//какие модули подключеныв интерпретаторе | |
> php.exe -m | |
//путь к файлу конфигурации php | |
> php.exe -r 'echo php_ini_loaded_file();' | |
//все предопределенные константы (включая подключенные модули) | |
echo '<pre>'; | |
echo print_r(get_defined_constants(), true); | |
echo '</pre>'; | |
// вывести все подключенные расширения интерпретатора | |
get_loaded_extensions(); | |
//кол-во байтов оперативной памяти, занимаемые скриптом | |
memory_get_usage() | |
// задать опцию конфигурации php (доступно не для всех опций) | |
ini_set('option_name', option_value); | |
// получить все настройки интерпретатора | |
ini_get_all() | |
// variables_order='EGPCS' - переменная ini , которая отвечает за наполняемость массивов $_ENV, $_GET, $_POST, $_COOKIE, $_SERVER | |
// наличие буквы в настройке отвечает за наполняемость соответствующего массива | |
//переменные окружения (и соответствующий массив $_ENV) можно использвать для конфигурации среды(тест, отладка, продакшен), задания паролей, адресов и т.п. | |
//error_log - php.ini директива для указания, куда писать журнал ошибок | |
//display_errors - php.ini директива для включения или отключения вывода ошибок в стандартный поток (в браузер) | |
//composer: | |
>php composer.phar --version #запуск менеджера пакетов (composer.phar скачать с официального сайта) | |
>composer --version #запуск менеджера пакетов, если он установлен автоматически | |
composer.json - файл конфигурации пакетного менеджера (располагается обычно в корне проекта) | |
composer install - установка пакетов, указанных в composer.json (команда выполняется в одной директории с composer.json) | |
>composer self-update #обновление самого composer | |
// конспект | |
1. class Foo extends Bar // класс Foo наследуется от Bar | |
2. class Foo extends Bar implements IBaz // класс Foo наследуется от Bar и реализует интерфейс IBaz | |
3. self::$var - доступ к статическому св-ву (константе) класса внутри класса | |
4. parent::метод() - вызов метод() из родительского класса (обычно вызов совершается в переопределенном методе потомка) | |
5. статические методы могут обращаться внутри себя только к статическим св-вам или константам | |
6. класс может наследоваться ТОЛЬКО от одного предка, но приэтом от многих интерфейсов | |
7. интерфейс - это класс со св-ми и методами без тела (т.е. блок кода {} отсутствует). | |
8. классы, реализующие интерфейс, ДОЛЖНЫ иметь реализации методов интерфейса (даже пустые) | |
9. у абстрактного класса не может быть экземпляров | |
10. spl_autoload_register - Регистрирует заданную функцию в качестве реализации метода __autoload() | |
и служит для загрузки множества классов из разных мест | |
11. namespace path\from\root - задаем пространство имен как путь от корня до папки с текщим файлом | |
12. use path\from\route - использование конкретрного пространства имен в текущем файле | |
13. use \path\to\classes\{class1,class2} - группировка классов, находящихся в одном месте | |
14. trait - это механизм обеспечения повторного использования кода в языках с поддержкой только одиночного наследования, | |
таких как PHP. Трейт предназначен для уменьшения некоторых ограничений одиночного наследования, позволяя разработчику | |
повторно использовать наборы методов свободно, в нескольких независимых классах и реализованных с использованием разных архитектур построения классов | |
15. static:: - позднее статическое связывание | |
16. $obj->method1()->method2() - цепочка вызовов методов | |
17. магические методы начинающиеся с __ вызываются неявно | |
18. instanceof - ключевое слово-оператор для теста объекта на принадлежность к классу | |
19. $classObj2 = clone $classObj1 - клонирование (создание независимой копии объекта) | |
20. list($x,$y) = [1,2] - способ создания переменных из массива | |
21. $var = function($args) use ($closured_var) {...} - анонимная функция замыкает переменную | |
22. trait в отличие от interface содержит методы с реализацией и используется, чтобы не реализовывать одини те же методы во всех реализующих интерфейс(ы) классах | |
23. namespaceName\doFoo() - вызов функции с использованием полного имени с пространством имен | |
24. use full\namespace\Foo as Foo - способ импортирования имен из пространств имен, чтобы сократить полное имя при последующих обращениях к классу | |
# === LARAVEL === | |
> composer global about # информация о глобальном конфиге composer | |
> composer global require laravel/installer #установить laravel глобально с помощью composer | |
> laravel new project #создать проект project с созданием одноименной папки в декущей директории | |
> composer create-project --prefer-dist laravel/laravel project #создать проект project с созданием одноименной папки в декущей директории (альтернативный вариант) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment