PHP Academy
9.23K subscribers
167 photos
35 videos
318 links
@workakkk - с вопросами
Download Telegram
Media is too big
VIEW IN TELEGRAM
PHP, PDO SQL Injection

SQL Injection минимум который должен знать каждый разработчик код которого работает в production

00:00 Вступление и оглавление
01:06 Определения (теория)
01:45 Чем опасны SQL Injection
03:34 Практический стенд
06:12 Обхода аутедентификации
09:23 Модификации базы данных
11:47 Защита с помощью placeholder
15:49 Защита там где placeholder не применимы

источник

@phpshka
12👍5🔥1
Composer, Создание своего пакета

PHP, Composer, Советы по созданию пакета, composer.json
PHP, composer, публикация пакета на packagist и github
Code style вашего проекта
Интеграция travis-ci в ваш php проект
PHPSTAN. Статический анализ PHP проекта
PHPINSIGHTS, Статический анализ в вашего PHP проекта
PSALM, статический анализ PHP проекта
PHPMD, статический анализ php mess detector

📌 Источник

@phpshka
👍9🔥21
Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:


Машинное обучение: @ai_machinelearning_big_data
Go: @Golang_google
C#: @csharp_ci
Базы данных: @sqlhub
Python: @pythonl
C/C++/: @cpluspluc
Data Science: @data_analysis_ml
Devops: @devOPSitsec
Rust: @rust_code
Javascript: @javascriptv
React: @react_tg
PHP: @phpshka
Docker: @docker
Android: @android_its
Мобильная разработка: @mobdevelop
Linux: linuxacademy
Big Data: t.iss.one/bigdatai
Хакинг: @linuxkalii
Java:@javatg
Собеседования: @machinelearning_interview


💼 Папка с вакансиями: t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy

🔥ИТ-Мемы: t.iss.one/memes_prog

🇬🇧Английский: @english_forprogrammers

📕Ит-книги https://t.iss.one/addlist/BkskQciUW_FhNjEy
👍4🔥1
🖥 LLPhant - это полноценная инфраструктура на PHP, для создавания искусственного интеллекта и генерации сложных приложенияй.

Эта платформа разработана с учетом максимальной простоты в использовании и предлагает инструменты, необходимые для разработки мощных приложений. Она совместима с Symfony и Laravel, что делает ее гибкой в использовании и интеграции с другими технологиями.

Github

@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76🔥1
Как мы планировали повысить версию PHP за месяц, а потратили на это год
https://habr.com/ru/companies/yandex/articles/756498/
👍1
PHP Fibers: практический пример
https://habr.com/ru/articles/756642/
👍62🔥2
🤔 Каждый начинающий айтишник задумывался какой язык программирования выбрать.
Наш канал поможет избавиться Вам от этого гнетущего вопроса.
Единственный вопрос который вы должны задать это «А может на PHP?»

Посмотреть канал
👍1
💻📖 hacker-laws

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

@phpshka
5👍2
⚡️Почему тип поля enum на уровне базы — зло

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

А что на практике? Давайте рассмотрим.

Допустим у нас есть таблица со списком платежей, содержащая колонку status со следующими значениями:
CREATE TABLE `payments`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`status` ENUM('new', 'progress', 'done', 'fauled') NOT NULL,
KEY(`id`)
) CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


▪️Через какое-то время была замечена грамматическая ошибка в слове "failed" и принято решение её исправить.

Нюанс изменения enum поля в том, что при его редактировании сбрасываются значения колонки в null для всех строк таблицы, а то и вовсе получим ошибку Data truncated for column 'status' at row 3. То есть, чтобы корректно изменить enum поле, нужно куда-то сохранить данные. План действий будет таков:

1. Создать новую enum колонку с правильным набором данных;

2. Скопировать значение из старой колонки в новую и сразу применить исправление значения;

3. Удалить старую enum колонку;

4. Переименовать новую enum колонку.

При использовании фреймворка Laravel это будет выглядеть следующим образом:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
// Создаём новую колонку
Schema::table('payments', function (Blueprint $table) {
$table->enum('tmp_status', ['new', 'progress', 'done', 'failed']);
});

// Копируем значения из enum колонки в новую с корректировкой значения
DB::statement('UPDATE payments SET tmp_status = (IF status = \'fauled\' THEN \'failed\' ELSE status END IF)');

// Удаляем старую колонку
Schema::table('payments', function (Blueprint $table) {
$table->dropColumn('status');
});

// Переименовываем колонку
Schema::table('payments', function (Blueprint $table) {
$table->renameColumn('tmp_status', 'status');
});
}
};


На языке SQL эти действия будут выглядеть следующим образом:

📌 Читать далее

@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍7🔥2
🔥Что нового в новом PHP 8.3.

PHP 8.3 выйдет 23 ноября 2023 года; в нем будут улучшения для классов readonly, новая функция json_validate(), дополнения к недавно добавленному классу Randomizer, обнаружение переполнения стека и многое другое.

📌Подробнее

@phpshka
8👍4🔥2