دليل سريع PHP
دليل سريع PHP هو مرجع متكامل يركز على مفاهيم بي إتش بي الأساسية والمتقدمة لتسهيل تطوير البرمجيات وحل المشكلات بكفاءة. يُعد هذا الدليل أداة مهمة للمطورين لفهم تركيب لغة بي إتش بي، الهياكل البيانية، الخوارزميات، ومبادئ البرمجة الكائنية (OOP). يساعد دليل سريع PHP على كتابة أكواد نظيفة وفعالة، وتقليل الأخطاء الشائعة مثل تسرب الذاكرة أو سوء إدارة الأخطاء، مع تعزيز الأداء والأمان في التطبيقات.
يمكن استخدام دليل سريع PHP في جميع مراحل تطوير بي إتش بي، سواء في بناء التطبيقات البسيطة أو النظم المعقدة، كما يوفر إشارات عملية لتطبيق أفضل ممارسات التصميم والبرمجة. سيتعلم القارئ كيفية التعامل مع التركيبات الأساسية للغة، فهم أنواع البيانات والمصفوفات، إنشاء خوارزميات فعالة، وتطبيق مبادئ OOP مثل الوراثة، التجريد، والتعددية.
في سياق هندسة البرمجيات، يربط دليل سريع PHP بين أساسيات اللغة والتطبيق العملي، مما يتيح للمطورين بناء أنظمة قابلة للتوسع والصيانة. يغطي هذا الدليل المشكلات الشائعة، نصائح التحسين، وأساليب تحسين الأداء، مع أمثلة عملية قابلة للتنفيذ فوراً. في النهاية، يزود المطورين بالأدوات اللازمة لتعزيز جودة البرمجيات وتسهيل صيانة المشاريع الكبيرة والمعقدة في بيئة PHP.
مثال أساسي
php<?php
// إنشاء مصفوفة بيانات بسيطة وتمريرها عبر دالة لمعالجة المعلومات
$data = [
'name' => 'محمد',
'age' => 28,
'role' => 'مطور'
];
function displayUserInfo(array $user): void {
foreach ($user as $key => $value) {
echo ucfirst($key) . ": " . $value . PHP_EOL;
}
}
// استدعاء الدالة مع المصفوفة
displayUserInfo($data);
?>
في المثال أعلاه، قمنا أولاً بإنشاء مصفوفة $data تحتوي على معلومات المستخدم. استخدام المصفوفة هنا يوضح كيفية التعامل مع هياكل البيانات في بي إتش بي بشكل مباشر وعملي. دالة displayUserInfo تستقبل مصفوفة كمعامل (type hinting array) وهذا يضمن أن الدالة تعمل فقط مع نوع البيانات الصحيح، مما يقلل الأخطاء ويعزز أمان الكود.
داخل الدالة، تم استخدام حلقة foreach لاستعراض العناصر، مع ucfirst لتغيير الحرف الأول من كل مفتاح إلى حرف كبير، مما يحسن من قابلية القراءة عند عرض البيانات. استخدام PHP_EOL يضمن أن كل معلومة تظهر في سطر جديد، وهو نهج أفضل من كتابة "\n" مباشرة لتوافقية أكبر مع بيئات مختلفة.
هذا المثال يوضح كيفية اتباع أفضل ممارسات بي إتش بي: استخدام type hints، الكتابة النظيفة، التعامل مع البيانات بأمان، وتجنب الأخطاء الشائعة مثل معالجة أنواع غير متوقعة. كما يمكن توسيع هذا المثال ليشمل مصفوفات أكثر تعقيداً أو دمجها مع قواعد بيانات، مما يربط بين مفاهيم دليل سريع PHP والتطبيق العملي في المشاريع.
مثال عملي
php<?php
// تعريف فئة مستخدم لتوضيح مبادئ OOP
class User {
private string $name;
private int $age;
private string $role;
public function __construct(string $name, int $age, string $role) {
$this->name = $name;
$this->age = $age;
$this->role = $role;
}
public function getInfo(): string {
return "الاسم: {$this->name}, العمر: {$this->age}, الدور: {$this->role}";
}
}
// إنشاء كائن مستخدم واستخدامه
$user = new User('ليلى', 32, 'مهندسة برمجيات');
echo $user->getInfo();
?>
Advanced بي إتش بي Implementation
php<?php
// دمج مبادئ OOP والخوارزميات مع إدارة الأخطاء
class Calculator {
public function divide(float $a, float $b): float {
if ($b === 0.0) {
throw new InvalidArgumentException("القسمة على صفر غير مسموح بها.");
}
return $a / $b;
}
}
try {
$calc = new Calculator();
echo $calc->divide(10, 2);
echo PHP_EOL;
echo $calc->divide(5, 0); // سيؤدي إلى استثناء
} catch (InvalidArgumentException $e) {
echo "خطأ: " . $e->getMessage();
}
?>
أفضل الممارسات في بي إتش بي تتضمن كتابة كود واضح ومنظم، استخدام هياكل البيانات المناسبة مثل المصفوفات والقوائم، وتطبيق مبادئ OOP بكفاءة. من الأخطاء الشائعة تجنب التحقق من صحة البيانات أو التعامل مع الأخطاء بشكل غير صحيح، مما يؤدي إلى تسرب الذاكرة أو انهيار النظام.
ينبغي للمطورين استخدام Type Hints، إدارة الاستثناءات، والتحقق من المدخلات لتجنب الأخطاء الحرجة. تحسين الأداء يمكن تحقيقه من خلال اختيار الخوارزميات المناسبة وتجنب التكرار غير الضروري في الحلقات. من حيث الأمان، يجب التعامل مع المدخلات بحذر، استخدام طرق التحقق من SQL وXSS، والالتزام بأفضل الممارسات الخاصة بالجلسات والكوكيز.
في بيئة المشاريع الكبيرة، دمج دليل سريع PHP مع استراتيجيات التصميم الجيدة يعزز الصيانة والتوسع، ويقلل من المشكلات المستقبلية، مع ضمان كود قوي، آمن، وفعال.
📊 المرجع الشامل
بي إتش بي Element/Method | Description | Syntax | Example | Notes |
---|---|---|---|---|
echo | طباعة النصوص على الشاشة | echo "text"; | echo "مرحبا"; | سريع وفعال للطباعة |
طباعة نصوص مع إرجاع قيمة | print "text"; | print "مرحبا"; | يُعيد 1 دائماً | |
array | إنشاء مصفوفة | array(1,2,3); | $arr = array(1,2,3); | يمكن استخدام [] |
count | عدد عناصر المصفوفة | count($arr); | count($arr); | مفيد في الحلقات |
foreach | التكرار على المصفوفة | foreach($arr as $val) | foreach($arr as $val) echo $val; | آمن وسهل |
isset | التحقق من وجود متغير | isset($var) | isset($name); | يعيد true/false |
empty | التحقق من كون المتغير فارغ | empty($var) | empty($name); | يشمل null و"" و0 |
array_push | إضافة عناصر للمصفوفة | array_push($arr, $val); | array_push($arr, 4); | يضيف في نهاية المصفوفة |
array_pop | إزالة آخر عنصر | array_pop($arr); | array_pop($arr); | يعيد العنصر المحذوف |
explode | تقسيم نص إلى مصفوفة | explode(" ", $str); | explode(" ", "A B C"); | مفيد للتعامل مع النصوص |
implode | دمج مصفوفة إلى نص | implode("-", $arr); | implode("-", [1,2]); | يجعل المصفوفة نص |
strlen | طول النص | strlen($str); | strlen("مرحبا"); | يشمل الحروف والأرقام |
strpos | موقع حرف في النص | strpos($str,"x"); | strpos("abc","b"); | يعيد موقع أول ظهور |
substr | اقتطاع جزء من النص | substr($str,0,5); | substr("abcdef",0,3); | يعطي سلسلة فرعية |
trim | إزالة الفراغات من البداية والنهاية | trim($str); | trim(" abc "); | يساعد في تنظيف المدخلات |
array_merge | دمج مصفوفات | array_merge($a,$b); | array_merge([1],[2]); | يوحد المصفوفات |
sort | ترتيب مصفوفة | sort($arr); | sort([3,1]); | ترتيب تصاعدي |
rsort | ترتيب تنازلي | rsort($arr); | rsort([3,1]); | يساعد في التحليل |
in_array | التحقق من وجود عنصر | in_array(2,$arr); | in_array(2,[1,2]); | يعيد true/false |
array_keys | مفاتيح المصفوفة | array_keys($arr); | array_keys(["a"=>1]); | للتكرار على المفاتيح |
array_values | قيم المصفوفة | array_values($arr); | array_values(["a"=>1]); | للتكرار على القيم |
function | تعريف دالة | function name(){} | function test(){} | يمكن استخدام type hints |
return | إرجاع قيمة من دالة | return $val; | return 5; | ينهي تنفيذ الدالة |
class | تعريف فئة | class Name{} | class User{} | لبناء OOP |
public | وصول عام للخاصية أو الدالة | public $var; | public $name; | يمكن الوصول من الخارج |
private | وصول خاص | private $var; | private $age; | يقتصر على الفئة نفسها |
protected | وصول محمي | protected $var; | protected $role; | يمكن الوصول من الوراثة |
__construct | دالة المنشئ | function __construct(){} | function __construct($a){} | تهيئة الكائن |
__destruct | دالة الهدم | function __destruct(){} | function __destruct(){} | تحرير الموارد |
try/catch | معالجة الأخطاء | try{}catch(Exception $e){} | try{…}catch(Exception $e){} | للتعامل مع الاستثناءات |
throw | إطلاق استثناء | throw new Exception("msg"); | throw new Exception("خطأ"); | جزء من معالجة الأخطاء |
require | إدراج ملف إلزامي | require "file.php"; | require "config.php"; | يقاطع التنفيذ إذا فشل |
include | إدراج ملف | include "file.php"; | include "header.php"; | يكمل التنفيذ عند الفشل |
require_once | إدراج ملف مرة واحدة | require_once "file.php"; | require_once "config.php"; | منع التكرار |
include_once | إدراج مرة واحدة | include_once "file.php"; | include_once "header.php"; | منع التكرار |
define | تعريف ثابت | define("NAME","value"); | define("PI",3.14); | ثابت لا يتغير |
const | تعريف ثابت في OOP | const NAME="value"; | const MAX=100; | يستخدم داخل الفئات |
date | التعامل مع التاريخ | date("Y-m-d"); | date("Y-m-d"); | يمكن استخدام time() أيضاً |
time | الوقت الحالي بالثواني | time(); | time(); | لحساب الفترات الزمنية |
strtotime | تحويل نص إلى وقت | strtotime("next Monday"); | strtotime("2025-10-01"); | مفيد للجداول |
json_encode | تحويل مصفوفة إلى JSON | json_encode($arr); | json_encode(["a"=>1]); | لواجهات API |
json_decode | تحويل JSON لمصفوفة | json_decode($str,true); | json_decode('{"a":1}',true); | لتحليل البيانات |
file_get_contents | قراءة محتوى ملف | file_get_contents("file.txt"); | file_get_contents("data.txt"); | مباشر وبسيط |
file_put_contents | كتابة إلى ملف | file_put_contents("file.txt",$data); | file_put_contents("data.txt","abc"); | يكتب كل البيانات |
strlen | حساب طول النصوص | strlen($str); | strlen("abc"); | يشمل المسافات |
strpos | بحث عن نص | strpos($str,"b"); | strpos("abc","b"); | يعيد الموقع أو false |
substr | اقتطاع نص | substr($str,0,3); | substr("abcde",0,2); | يعطي جزء من النص |
str_replace | استبدال نصوص | str_replace("a","b",$str); | str_replace("a","b","abc"); | مفيد للتحويل |
explode | تقسيم نصوص | explode(" ",$str); | explode(" ","a b c"); | تحويل النص لمصفوفة |
implode | دمج مصفوفة | implode(",",$arr); | implode(",",[1,2]); | تحويل مصفوفة لنص |
preg_match | مطابقة Regex | preg_match("/a/",$str); | preg_match("/b/","abc"); | للنصوص المعقدة |
preg_replace | استبدال Regex | preg_replace("/a/","x",$str); | preg_replace("/a/","x","abc"); | مرن وقوي |
ceil | التقريب للأعلى | ceil(2.3); | ceil(2.3); | رقم صحيح أعلى |
floor | التقريب للأسفل | floor(2.7); | floor(2.7); | رقم صحيح أدنى |
round | التقريب | round(2.5); | round(2.5); | يمكن تحديد الدقة |
rand | توليد أرقام عشوائية | rand(1,10); | rand(1,10); | للاختبارات أو الألعاب |
mt_rand | أرقام عشوائية أسرع | mt_rand(1,10); | mt_rand(1,10); | أداء أفضل من rand |
min | max | إيجاد الحد الأدنى والأقصى | min($arr); max($arr); | min([1,2]); max([1,2]); |
array_filter | فلترة مصفوفة | array_filter($arr,function($v){return $v>2;}); | array_filter([1,2,3], fn($v)=>$v>1); | تنقية البيانات |
array_map | تطبيق دالة على مصفوفة | array_map(fn($v)=>$v*2,$arr); | array_map(fn($v)=>$v*2,[1,2]); | تعديل سريع للبيانات |
array_reduce | تجميع عناصر مصفوفة | array_reduce($arr, fn($carry,$v)=>$carry+$v); | array_reduce([1,2,3], fn($c,$v)=>$c+$v); | لحساب مجموع أو قيمة |
strtolower | تحويل نصوص إلى صغيرة | strtolower($str); | strtolower("ABC"); | تحسين التوحيد |
strtoupper | تحويل نصوص إلى كبيرة | strtoupper($str); | strtoupper("abc"); | تحسين التوحيد |
empty | التحقق من الفارغ | empty($var); | empty(""); | يشمل 0 و null |
isset | التحقق من الوجود | isset($var); | isset($name); | للتأكد من متغير موجود |
die | إيقاف البرنامج مع رسالة | die("msg"); | die("خطأ"); | مثل exit |
exit | إيقاف البرنامج | exit("msg"); | exit("انهاء"); | ينهي التنفيذ |
htmlspecialchars | تحويل الأحرف الخاصة | htmlspecialchars("<a>"); | htmlspecialchars("<b>"); | للحماية من XSS |
nl2br | تحويل الأسطر | nl2br("a\nb"); | nl2br("line1\nline2"); | يعطي <br> تلقائياً |
trim | إزالة المسافات | trim(" abc "); | trim(" abc "); | تنظيف المدخلات |
ltrim | إزالة المسافات من البداية | ltrim(" abc"); | ltrim(" abc"); | تنظيف النص |
rtrim | إزالة المسافات من النهاية | rtrim("abc "); | rtrim("abc "); | تنظيف النص |
array_key_exists | التحقق من مفتاح | array_key_exists("a",$arr); | array_key_exists("a",["a"=>1]); | للتحقق من المفاتيح |
method_exists | التحقق من دالة | method_exists($obj,"func"); | method_exists($user,"getInfo"); | للتحقق قبل الاستدعاء |
class_exists | التحقق من فئة | class_exists("User"); | class_exists("User"); | لتجنب الأخطاء |
interface_exists | التحقق من واجهة | interface_exists("IUser"); | interface_exists("IUser"); | للبرمجة المتقدمة |
trait_exists | التحقق من trait | trait_exists("T"); | trait_exists("T"); | للإعادة استخدام الأكواد |
spl_autoload_register | تحميل تلقائي للفئات | spl_autoload_register(fn($c)=>include "$c.php"); | spl_autoload_register(fn($c)=>include "$c.php"); | تسهيل إدارة الملفات |
ob_start | بدء التخزين المؤقت للمخرجات | ob_start(); | ob_start(); | لتحسين الأداء |
ob_get_clean | إرجاع محتوى المخزن المؤقت | ob_get_clean(); | ob_get_clean(); | لإدارة المخرجات |
session_start | بدء جلسة | session_start(); | session_start(); | لتخزين البيانات بين الصفحات |
session_destroy | إنهاء جلسة | session_destroy(); | session_destroy(); | لحذف بيانات الجلسة |
setcookie | إنشاء كوكيز | setcookie("name","value"); | setcookie("user","mamad"); | إدارة حالة المستخدم |
header | إرسال رؤوس HTTP | header("Location: url"); | header("Location: /home"); | إعادة توجيه |
filter_var | فلترة بيانات | filter_var($email,FILTER_VALIDATE_EMAIL); | filter_var("[[email protected]](mailto:[email protected])",FILTER_VALIDATE_EMAIL); | للتحقق من المدخلات |
md5 | تشفير | md5($str); | md5("123"); | للتجزئة الأساسية |
sha1 | تشفير | sha1($str); | sha1("123"); | للتجزئة |
password_hash | تشفير كلمات السر | password_hash($pass,PASSWORD_DEFAULT); | password_hash("123",PASSWORD_DEFAULT); | لأمان أفضل |
password_verify | التحقق من كلمة السر | password_verify($input,$hash); | password_verify("123",$hash); | للتحقق من كلمة السر |
filter_input | فلترة مدخلات | filter_input(INPUT_POST,"name",FILTER_SANITIZE_STRING); | filter_input(INPUT_POST,"name",FILTER_SANITIZE_STRING); | تنقية البيانات |
parse_url | تحليل URL | parse_url($url); | parse_url("[https://a.com"); | للتعامل](https://a.com%22%29; |
http_build_query | إنشاء استعلام URL | http_build_query($arr); | http_build_query(["a"=>1]); | تحويل مصفوفة لاستعلام |
microtime | وقت دقيق | microtime(true); | microtime(true); | لقياس الأداء |
ini_set | تغيير إعدادات PHP | ini_set("display_errors","1"); | ini_set("memory_limit","256M"); | تعديل مؤقت للإعدادات |
error_reporting | إعدادات عرض الأخطاء | error_reporting(E_ALL); | error_reporting(E_ALL); | لتطوير آمن |
gettype | نوع المتغير | gettype($var); | gettype(5); | لتصحيح الأخطاء |
var_dump | عرض محتوى المتغير | var_dump($var); | var_dump($data); | لتصحيح الأخطاء |
print_r | عرض المصفوفات والكائنات | print_r($arr); | print_r($data); | مفيد للتصحيح |
uniqid | معرف فريد | uniqid(); | uniqid(); | للتوليد السريع |
mt_srand | تهيئة مولد الأرقام | mt_srand(time()); | mt_srand(time()); | لزيادة العشوائية |
get_class | اسم الفئة | get_class($obj); | get_class($user); | مفيد للتحقق من النوع |
spl_object_hash | معرف الكائن | spl_object_hash($obj); | spl_object_hash($user); | لتتبع الكائنات |
interface | تعريف واجهة | interface Name{} | interface IUser{} | لتوحيد التصاميم |
trait | إعادة استخدام كود | trait Name{} | trait Loggable{} | لتقليل التكرار |
abstract | فئة مجردة | abstract class Name{} | abstract class Base{} | لإنشاء أساس للفئات |
final | منع الوراثة | final class Name{} | final class Singleton{} | لحماية التصميم |
clone | نسخ الكائن | $copy = clone $obj; | $copy = clone $user; | لإنشاء نسخة مستقلة |
global | الوصول لمتغير عالمي | global $var; | global $config; | استخدام محدود |
static | خصائص أو دوال ثابتة | static $var; | static $count; | للتعريف داخل الفئة |
self | الوصول للخصائص الثابتة | self::$var; | self::$count; | مفيد داخل الفئة |
parent | الوصول للأصل | parent::method(); | parent::getInfo(); | للوراثة |
namespace | تعريف مساحة اسم | namespace MyApp; | namespace App\Models; | لتجنب التعارض |
use | استخدام مساحة اسم | use MyApp\User; | use App\Models\User; | لتسهيل الاستخدام |
final function | منع تعديل الدالة | final function method(){} | final function run(){} | لحماية التنفيذ |
abstract function | دالة مجردة | abstract function method(); | abstract function run(); | تُعرف في الفئة الأساسية |
const class | ثوابت داخل الفئة | const NAME="value"; | const VERSION="1.0"; | ثابت داخل OOP |
yield | توليد قيم عند الطلب | yield $value; | yield 1; | لتقليل استهلاك الذاكرة |
generator | توليد تسلسلات | function gen() {yield 1;} | function gen(){yield 1;} | للتعامل مع البيانات الكبيرة |
array_slice | قص المصفوفة | array_slice($arr,0,2); | array_slice([1,2,3],0,2); | للحصول على جزء |
array_splice | إزالة وإدراج | array_splice($arr,1,1,[5]); | array_splice([1,2,3],1,1,[5]); | تعديل المصفوفة |
compact | إنشاء مصفوفة من المتغيرات | compact("a","b"); | $a=1;$b=2;compact("a","b"); | للتجميع |
extract | استخراج المتغيرات من مصفوفة | extract(["a"=>1]); | extract(["a"=>1]); | ينشئ $a=1 |
debug_backtrace | تتبع الأخطاء | debug_backtrace(); | debug_backtrace(); | لمعرفة مصدر الخطأ |
assert | التحقق من شرط | assert($x>0); | assert($x>0); | لتأكيد الافتراضات |
call_user_func | استدعاء دالة | call_user_func("func",$arg); | call_user_func("test",5); | ديناميكي |
call_user_func_array | استدعاء دالة مع مصفوفة | call_user_func_array("func",[$a]); | call_user_func_array("test",[5]); | ديناميكي |
func_get_args | الحصول على وسيطات الدالة | func_get_args(); | func_get_args(); | مفيد للدوال المرنة |
ob_flush | إرسال المخزن المؤقت | ob_flush(); | ob_flush(); | مع ob_start لتحسين الأداء |
📊 Complete بي إتش بي Properties Reference
Property | Values | Default | Description | بي إتش بي Support |
---|---|---|---|---|
memory_limit | int | string | 128M | تحديد الحد الأقصى للذاكرة |
max_execution_time | int | 30 | الحد الأقصى لتنفيذ السكربت | PHP 5+ |
error_reporting | int | E_ALL | تحديد أنواع الأخطاء | PHP 5+ |
display_errors | 0,1 | 1 | عرض الأخطاء على الشاشة | PHP 5+ |
post_max_size | int | string | 8M | أقصى حجم للبيانات المرسلة |
upload_max_filesize | int | string | 2M | أقصى حجم للملفات المرفوعة |
session.save_path | string | /tmp | مسار حفظ جلسات المستخدم | PHP 5+ |
date.timezone | string | UTC | المنطقة الزمنية الافتراضية | PHP 5+ |
default_charset | string | UTF-8 | ترميز النصوص الافتراضي | PHP 5+ |
log_errors | 0,1 | 1 | تمكين تسجيل الأخطاء | PHP 5+ |
max_input_vars | int | 1000 | الحد الأقصى للمتغيرات المرسلة | PHP 5.3+ |
realpath_cache_size | string | 16K | حجم ذاكرة التخزين المؤقت للمسارات | PHP 5+ |
opcache.enable | 0,1 | 1 | تمكين OPCache لتحسين الأداء | PHP 5.5+ |
session.gc_maxlifetime | int | 1440 | مدة صلاحية جلسة المستخدم | PHP 5+ |
باختصار، دليل سريع PHP يوفر أساساً قوياً لتعلم بي إتش بي بشكل عملي ومتقدم. من خلال فهم التركيبات الأساسية، هياكل البيانات، الخوارزميات، ومبادئ OOP، يمكن للمطورين كتابة برامج فعالة وآمنة وقابلة للصيانة. يربط الدليل بين النظرية والتطبيق، مع نصائح عملية لتجنب الأخطاء الشائعة وتحسين الأداء.
بعد إتقان هذا الدليل، يمكن الانتقال لدراسة مواضيع متقدمة مثل إطار العمل Laravel، تحسين الأداء باستخدام OPcache، إنشاء واجهات برمجة التطبيقات RESTful، وإدارة قواعد البيانات بشكل احترافي. ينصح بتطبيق الأمثلة عملياً في مشاريع صغيرة أولاً، ثم توسيع نطاقها لتطبيقات أكبر، مما يعزز فهم بي إتش بي العميق ويجعل من المطور خبيراً في بناء أنظمة متقدمة ومستقرة.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى