PHP - один из самых любимых и широко используемых языков программирования, на котором разработчики любят создавать свои сайты. Поэтому я хочу рассказать о стратегии программирования на PHP и о многом другом. Эти стратегии помогут вам по-разному.
Например, некоторые полезные советы и техники, которые могут быть использованы для улучшения и оптимизации вашего PHP кода, потому что каждый PHP разработчик хочет знать о рекомендациях, чтобы улучшить свой стиль кодирования и знания.
Не используйте require, require_once, include или include_once
Почти все разработчики используют этот способ работы с внешними файлами. Ваш скрипт должен включать различные файлы сверху, например, библиотеки классов, файлы для вспомогательных функций и т.д., как это показано ниже:
1 2 3 |
require_once('inclides/Configure.php'); require_once('inclides/Database.php'); require_once('class/general_functions.php'); |
Это довольно примитивно. Поэтому нужно делать это по-другому, и код должен быть более гибким. Напишите вспомогательные функции, чтобы включать файлы более легко. Рассмотрим пример:
1 2 3 4 5 6 7 8 9 10 11 |
function include_class($class_name) { //path to the class file $path = ROOT . '/include/' . $class_name . '.php'); if(file_exists($path)) { require_once( $path ); } } include_class('Configure'); include_class('Database'); |
С помощью этого можно сделать очень многое.
Создайте класс для повторяющихся задач
Объектно-ориентированное программирование - это мощный стиль программирования для гибкого программирования и меньших трудозатрат на выполнение огромной задачи, а также повторяющихся задач. Объектно-ориентированное программирование считается более совершенным и эффективным, чем процедуральный стиль программирования. Объектно-ориентированное программирование имеет ряд преимуществ перед обычным или процедурным стилем программирования. Классы и объекты - это два основных аспекта объектно-ориентированного программирования.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Rectangle { // Declare properties public $length = 0; public $width = 0; // Method to get the perimeter public function getPerimeter(){ return (2 * ($this->length + $this->width)); } // Method to get the area public function getArea(){ return ($this->length * $this->width); } } |
После того, как класс создан, создайте еще один PHP-файл для получения доступа этого класса с помощью объекта:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
require "Rectangle.php"; // Подключаем класс. $obj_rec = new Rectangle; // Создайте новый объект из класса Rectangle $obj->length = 30; // Задайте значения свойств объекта $obj->width = 20; // Задайте значения свойств объекта // Просмотрите значения свойств объекта еще раз, чтобы показать изменения echo $obj->length; // Вывод: 30 echo $obj->width; // Вывод: 20 // Вызовите методы объекта echo $obj->getPerimeter(); // Вывод: 100 echo $obj->getArea(); // Вывод: 600 |
Делайте свои функции гибкими
При добавлении одного элемента в сессию или любой другой объект вы используете приведенную выше функцию. При добавлении нескольких элементов вы создадите еще одну функцию? Поэтому просто сделайте функцию достаточно гибкой, чтобы она могла принимать различные типы параметров. Рассмотрим пример:
1 2 3 4 5 6 |
function add_gift($item_id , $qty) { $_SESSION['gift'][$item_id] = $qty; } add_gift( 'Phone' , 1 ); |
Приведенная выше функция использовалась для добавления одного подарка, теперь посмотрим пример для одного и более одного параметра:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function add_gift($item_id , $qty) { if(!is_array($item_id)) { $_SESSION['gift'][$item_id] = $qty; } else { foreach($item_id as $i_id => $qty) { $_SESSION['gift'][$i_id] = $qty; } } } add_gift( 'Phone' , 1 ); add_gift( array('Laptop' => 1 , 'Pen' => 2) ); |
Всегда используйте правильную кодировку символов для соединения с MySQL
Это большая проблема для новичков, когда-либо сталкивались с проблемой, что символы Unicode/UTF-8 хранятся в таблице MySQL правильно, PHPMyAdmin также показывает их правильно, но когда вы получаете их и отображаете на вашей странице, они не отображаются правильно. Секрет заключается в коллизии соединения MySQL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$host = 'localhost'; $username = 'root'; $password = 'password'; // Попытка подключения к базе данных $con = mysqli_connect($host , $username, $password); // Проверка корректности соединения if (!$con) { die ("Не удалось подключиться к хосту базы данных: ". mysqli_connect_error()); } // Установите кодировку соединения if(!mysqli_set_charset ( $con , 'UTF8' )) { die('mysqli_set_charset() failed'); } |
После подключения к базе данных неплохо было бы указать кодировку. Это необходимо, когда вы работаете с несколькими языками в своем приложении.
Использование связываемых переменных для предотвращения SQL-инъекции
Всегда используйте связываемые переменные для предотвращения атак SQL-инъекций вместо обычного SQL-запроса. Первым шагом в предотвращении атаки SQL-инъекции является определение того, какие из ваших приложений (если таковые имеются) уязвимы.
Вам необходимо подготовить связываемые переменные с помощью параметризованных запросов. Рассмотрим пример:
1 2 3 4 5 6 7 8 9 |
$cid = $_GET['cid']; $get_prepare_query = db_prepare_query("select * from ".TABLE_CATEGORIES." where category_id = ?"); $get_prepare_query->bind_param('s', $cid); $get_category_prepare_result = db_prepare_result($get_prepare_query); $get_category_result = array_shift($get_category_prepare_result); if(sizeof($get_category_result) == 0 ) tep_redirect(tep_create_url('')); $category_id = $get_category_result['category_id']; |
Используйте switch вместо if-проверок для строк
Полезный трюк PHP для разработчиков заключается в использовании switch вместо повторяющихся условий If. Преимущество этого заключается в том, что код будет выполняться быстрее, что повышает производительность. Использование операторов switch позволяет выйти за рамки использования цепочек if-else if-else.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
if($color == 'yellow') { echo "The color is yellow"; } if($color == 'black') { echo "The color is black"; } if($color == 'red') { echo "The color is red"; } if($color == 'pink') { echo "Color is pink"; } |
Лучше сделать это вот так, с помощью switch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
switch ($color ) { case 'yellow' : echo "The color is yellow" ; break; case 'black' : echo "The color is black" ; break ; case 'red' : echo "The color is red" ; break ; case 'pink' : echo "Color is pink" ; break ; } |
Разбейте большой массив на части с помощью array_chunk()
Мы можем оптимизировать нашу длительную работу с массивами с помощью функции array_chunk. В PHP мы можем разделить массив на небольшие фрагменты. Функция array_chunk() является встроенной функцией в PHP и используется для разбиения массива на части или куски заданного размера в зависимости от параметров, переданных в функцию.
Функция PHP для разбиения массива на части:
1 |
array_chunk($array, $size) |
Последний кусок может содержать оставшиеся данные массива, которые могут быть меньше или равны его размеру.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$token_array = {'321321321s5d1s3d5a1sd', 'asda1s32d1a32s1d3a21d3a', '4as3da4s2d13a21sd3da21d', '5a6sd5as65da3s2d545sd4a', 'as4d534a3s5d4a3s5da35sd', 'a3sd4a35s4d35a4sd3a4ds3', '45as4d3a54s3d5a43sd4ad3', '43a5s4d35a4sd35a4s5a4s3', '435a4sd35a4s3d5a4s3d5d4', '3a5s4d35a4s3d5a4s3d543s', '4a35s4d3a5s4d35a4s3d5d4', '43as54d3a5s43d5a4s3d543' .......}; foreach(array_chunk($token_array, 10) as $token){ print_r($token) // делайте свою работу тут... } |
Методы HTTP: GET и POST
HTTP работает как протокол "запрос-ответ" между клиентом и сервером. Клиент отправляет HTTP-запрос на сервер, затем сервер возвращает клиенту ответ. В ответе содержится информация о запрашиваемом содержимом. Два типа методов:
- GET - запрашивает данные с указанного ресурса.
- POST - отправляет данные для обработки на указанный ресурс.
Старайтесь всегда использовать метод POST. например, так:
1 2 3 |
if(isset($_POST["name"])) { echo "Привет ". $_POST['name']; } |
Проверьте существование переменной перед ее использованием
Определите, установлена ли переменная и не является ли она NULL. Всегда проверяйте существование переменной перед использованием.
1 2 3 |
if(isset($_POST["name"])) { echo "Привет ". $_POST['name']; } |
Функция isset() используется для проверки того, установлена ли переменная или нет. Функция isset() возвращает false, если данная переменная содержит значение NULL.
Работа с троичными операторами
Лучшие советы и хитрости PHP для хорошей производительности - это использование троичных операторов в качестве альтернативы простым конструкциям IF. Это поможет вашему коду стать легче и может быть без проблем вложенным.
1 |
$phone = ( !empty ( $_POST['phone'] ) ? $_POST['phone'] : 9111111111 ) ; |
Эти методы сэкономят ваше время и уменьшат количество кода, выработают у вас привычку использовать лучшие практики.