قاموس PHP
قاموس PHP هو مرجع شامل لمفاهيم بي إتش بي الأساسية والمتقدمة، ويعد أداة ضرورية لكل مطور يسعى لفهم عمق لغة بي إتش بي وتطبيقها بفعالية في المشاريع الحقيقية. يوفر قاموس PHP تغطية كاملة لمجموعة متنوعة من المواضيع مثل البنية الأساسية للغة، التركيبات البرمجية (syntax)، هياكل البيانات (arrays, objects, associative arrays)، الخوارزميات الأساسية والمتقدمة، ومبادئ البرمجة الكائنية (OOP). يعتبر فهم قاموس PHP أساسيًا لضمان كتابة كود نظيف، قابل للصيانة، وعالي الأداء ضمن بنية البرامج وأنظمة المؤسسات.
يمكن استخدام قاموس PHP في تطوير التطبيقات الخلفية (backend) عند الحاجة لمعالجة البيانات، إدارة قواعد البيانات، أو تصميم هياكل بيانات معقدة. كما يتيح للمهندسين تحديد أفضل الممارسات وتجنب الأخطاء الشائعة مثل تسرب الذاكرة أو التعامل السيء مع الأخطاء. من خلال دراسة قاموس PHP، سيتعلم المطورون كيفية تطبيق المبادئ المتقدمة للغة، تحسين أداء التطبيقات، ودمج تقنيات OOP بكفاءة ضمن المشاريع الواقعية.
هذا القاموس يقدم فهمًا معمقًا للغة PHP ضمن سياق تطوير البرمجيات وهندسة الأنظمة، ويغطي كل ما يحتاجه المطور من مفاهيم، أمثلة عملية، واستراتيجيات لتجنب الأخطاء وتحسين الأداء. بعد دراسة هذا القاموس، سيكون القارئ قادرًا على كتابة كود PHP احترافي، حل المشاكل البرمجية بكفاءة، وتطبيق أفضل الممارسات القياسية في المشاريع المتقدمة.
مثال أساسي
php<?php
// قاموس PHP - مثال أساسي
// إنشاء مصفوفة (Array) تمثل قاموس كلمات
$dictionary = [
"PHP" => "لغة برمجة للخوادم",
"Array" => "هيكل بيانات لتخزين عدة قيم",
"Function" => "كتلة من الكود يمكن إعادة استخدامها",
"OOP" => "البرمجة الكائنية التوجه"
];
// إضافة عنصر جديد
$dictionary["Algorithm"] = "مجموعة خطوات لحل مشكلة";
// عرض جميع المفاتيح والقيم
foreach ($dictionary as $term => $definition) {
echo "$term: $definition\n";
}
?>
في المثال أعلاه، بدأنا بإنشاء قاموس PHP باستخدام المصفوفات الترابطية (associative arrays)، حيث يمثل كل مفتاح (key) مصطلحًا في بي إتش بي، والقيمة (value) شرحًا له. هذا الاستخدام يوضح كيفية إدارة البيانات بشكل منظم وقابل للبحث داخل التطبيق.
أضفنا عنصرًا جديدًا للقاموس باستخدام $dictionary["Algorithm"]، مما يوضح كيف يمكن تعديل القواميس ديناميكيًا أثناء التنفيذ. بعد ذلك، استخدمنا حلقة foreach لاستعراض جميع العناصر، وهي ممارسة شائعة في PHP للتعامل مع المصفوفات الكبيرة بكفاءة.
يمثل هذا المثال تطبيقًا عمليًا لمبادئ PHP الأساسية، بما في ذلك التركيب البرمجي، هياكل البيانات، وأساليب التكرار. كما يبرز كيفية استخدام المصفوفات الترابطية لتخزين البيانات المنظمة، وهو مفهوم أساسي في العديد من المشاريع الواقعية مثل إدارة الإعدادات، القوائم المرجعية، والبيانات القابلة للتوسع.
مثال عملي
php<?php
// قاموس PHP - مثال عملي مع OOP
class Dictionary {
private array $terms = [];
public function addTerm(string $key, string $definition): void {
$this->terms[$key] = $definition;
}
public function getTerm(string $key): ?string {
return $this->terms[$key] ?? null;
}
public function listTerms(): void {
foreach ($this->terms as $term => $definition) {
echo "$term: $definition\n";
}
}
}
// استخدام القاموس
$myDictionary = new Dictionary();
$myDictionary->addTerm("PHP", "لغة برمجة للخوادم");
$myDictionary->addTerm("Algorithm", "مجموعة خطوات لحل مشكلة");
$myDictionary->listTerms();
?>
Advanced بي إتش بي Implementation
php<?php
// قاموس PHP - مثال متقدم مع إدارة الأخطاء والتحسينات
class AdvancedDictionary {
private array $terms = [];
public function addTerm(string $key, string $definition): void {
if (empty($key) || empty($definition)) {
throw new InvalidArgumentException("المفتاح أو التعريف لا يمكن أن يكون فارغًا");
}
$this->terms[$key] = $definition;
}
public function getTerm(string $key): string {
if (!isset($this->terms[$key])) {
throw new OutOfBoundsException("المصطلح غير موجود في القاموس");
}
return $this->terms[$key];
}
public function removeTerm(string $key): void {
unset($this->terms[$key]);
}
public function searchTerm(string $query): array {
return array_filter($this->terms, function($definition) use ($query) {
return stripos($definition, $query) !== false;
});
}
}
// مثال على الاستخدام
$dictionary = new AdvancedDictionary();
try {
$dictionary->addTerm("PHP", "لغة برمجة للخوادم");
$dictionary->addTerm("OOP", "البرمجة الكائنية التوجه");
print_r($dictionary->searchTerm("لغة"));
} catch (Exception $e) {
echo "خطأ: " . $e->getMessage();
}
?>
أفضل الممارسات في PHP عند التعامل مع قاموس PHP تشمل استخدام هياكل البيانات الملائمة مثل المصفوفات الترابطية، والتأكد من التحقق من صحة البيانات قبل إضافتها، كما رأينا في المثال المتقدم باستخدام استثناءات InvalidArgumentException وOutOfBoundsException.
من الأخطاء الشائعة التي يجب تجنبها هي عدم التحقق من وجود المفتاح قبل الوصول إليه، مما يؤدي إلى أخطاء تنفيذية، أو استخدام حلقات غير فعالة مع مصفوفات كبيرة، مما يسبب ضعف الأداء. كما يجب الانتباه إلى إدارة الذاكرة بشكل صحيح عند التعامل مع كائنات كبيرة لتجنب تسرب الذاكرة.
تحسين الأداء يتطلب استخدام دوال PHP المدمجة مثل array_filter وarray_map وكتابة خوارزميات فعالة. من ناحية الأمان، يجب التأكد من التعامل الصحيح مع البيانات القادمة من المستخدم لتجنب حقن الكود أو ثغرات SQL عند توسيع القاموس ليشمل تخزين البيانات في قواعد البيانات.
📊 المرجع الشامل
بي إتش بي Element/Method | Description | Syntax | Example | Notes |
---|---|---|---|---|
array | هيكل بيانات لتخزين عدة قيم | array() | $arr = array(1,2,3); | أساسي |
count | إرجاع عدد عناصر المصفوفة | count($arr) | echo count($arr); | شائع |
in_array | تحقق من وجود قيمة في المصفوفة | in_array($val, $arr) | if(in_array(2,$arr)){} | مفيد للتحقق |
array_key_exists | التحقق من مفتاح معين | array_key_exists('key', $arr) | array_key_exists('PHP', $dict); | للتحقق من المفاتيح |
unset | حذف عنصر | unset($arr[0]) | unset($arr['PHP']); | تحرير الذاكرة |
foreach | حلقة تكرار | foreach($arr as $item) | foreach($dict as $k=>$v){} | أساسية للمصفوفات |
array_filter | تصفية مصفوفة | array_filter($arr,function($val){}) | array_filter($dict,function($d){return strlen($d)>5;}); | مفيد للبحث |
array_map | تطبيق دالة على كل عنصر | array_map(fn($v)=>$v*2,$arr) | array_map(fn($d)=>strtoupper($d),$dict); | تحويل البيانات |
array_merge | دمج مصفوفتين | array_merge($arr1,$arr2) | $all=array_merge($arr1,$arr2); | مفيد لتجميع البيانات |
sort | ترتيب مصفوفة | sort($arr) | sort($arr); | تصاعدي |
ksort | ترتيب حسب المفاتيح | ksort($arr) | ksort($dict); | تصاعدي حسب المفتاح |
asort | ترتيب حسب القيمة | asort($arr) | asort($dict); | تصاعدي حسب القيمة |
array_keys | إرجاع مفاتيح المصفوفة | array_keys($arr) | array_keys($dict); | للحصول على المفاتيح |
array_values | إرجاع قيم المصفوفة | array_values($arr) | array_values($dict); | للحصول على القيم |
array_search | بحث عن قيمة وإرجاع المفتاح | array_search($val,$arr) | array_search("لغة",$dict); | مفيد للبحث |
array_unique | إزالة القيم المكررة | array_unique($arr) | array_unique($arr); | تنقية البيانات |
explode | تقسيم نص إلى مصفوفة | explode(",",$str) | explode(",","PHP,OOP"); | لتقسيم النص |
implode | دمج مصفوفة إلى نص | implode(",",$arr) | implode(",",$arr); | لعكس explode |
trim | إزالة المسافات | trim($str) | trim(" PHP "); | تنظيف البيانات |
strtolower | تحويل النص لحروف صغيرة | strtolower($str) | strtolower("PHP"); | توحيد النصوص |
strtoupper | تحويل النص لحروف كبيرة | strtoupper($str) | strtoupper("php"); | توحيد النصوص |
strlen | طول النص | strlen($str) | strlen("PHP"); | لحساب طول النص |
strpos | موقع نص داخل نص | strpos($str,"P") | strpos("PHP","P"); | للبحث داخل النص |
substr | اقتطاع جزء من النص | substr($str,0,3) | substr("PHP",0,2); | لتحليل النص |
function | تعريف دالة | function name(){ } | function greet(){echo "Hi";} | أساسية |
return | إرجاع قيمة من دالة | return $value | return 5; | مهم داخل الدوال |
class | تعريف كلاس | class Name{} | class Dictionary{} | OOP |
private | متغير خاص بالكلاس | private $var | private $terms=[]; | Encapsulation |
public | متغير عام بالكلاس | public $var | public $name; | الوصول من خارج الكلاس |
protected | متغير محمي بالكلاس | protected $var | protected $items; | الوصول من الوراثة |
new | إنشاء كائن | $obj=new ClassName(); | $dict=new Dictionary(); | OOP |
$this | الإشارة للكائن الحالي | $this->var | $this->terms=[]; | داخل الكلاس |
__construct | دالة البناء | function __construct(){} | function __construct(){} | Initialization |
isset | التحقق من وجود متغير | isset($var) | isset($arr['key']); | تجنب الأخطاء |
empty | التحقق من فارغ | empty($var) | empty($arr['key']); | تجنب الوصول لقيم غير موجودة |
try/catch | إدارة الاستثناءات | try{}catch(Exception $e){} | try{$dict->getTerm('PHP');}catch(Exception $e){} | خطأ آمن |
throw | رمي استثناء | throw new Exception(); | throw new Exception("Error"); | للتنبيه عن الأخطاء |
array_key_exists | التحقق من المفتاح | array_key_exists('key',$arr) | array_key_exists('PHP',$dict); | تجنب undefined index |
unset | حذف متغير أو عنصر | unset($var) | unset($arr['key']); | تحرير الذاكرة |
array_slice | اقتطاع جزء من المصفوفة | array_slice($arr,0,2) | array_slice($arr,0,2); | للتقسيم |
array_push | إضافة عنصر | array_push($arr,$val) | array_push($arr,"PHP"); | مفيد للقوائم |
array_pop | حذف آخر عنصر | array_pop($arr) | array_pop($arr); | مفيد للقوائم |
array_shift | حذف أول عنصر | array_shift($arr) | array_shift($arr); | FIFO |
array_unshift | إضافة عنصر في البداية | array_unshift($arr,$val) | array_unshift($arr,"PHP"); | FIFO |
implode | دمج مصفوفة لنص | implode(",",$arr) | implode(",",$arr); | لتصدير البيانات |
explode | تقسيم نص لمصفوفة | explode(",",$str) | explode(",","a,b"); | لتحليل النصوص |
str_replace | استبدال نص | str_replace("a","b",$str) | str_replace("PHP","PHP7","PHP"); | معالجة النصوص |
substr_replace | استبدال جزء من النص | substr_replace($str,"b",0,1) | substr_replace("PHP","J",0,1); | معالجة النصوص |
array_search | البحث عن قيمة | array_search($val,$arr) | array_search("PHP",$arr); | Return key |
array_flip | عكس المفاتيح والقيم | array_flip($arr) | array_flip($arr); | Useful for lookups |
array_key_first | أول مفتاح | array_key_first($arr) | array_key_first($arr); | PHP 7.3+ |
array_key_last | آخر مفتاح | array_key_last($arr) | array_key_last($arr); | PHP 7.3+ |
function_exists | التحقق من وجود دالة | function_exists('name') | function_exists('greet'); | تجنب الأخطاء |
method_exists | التحقق من وجود دالة في كلاس | method_exists($obj,'func') | method_exists($dict,'addTerm'); | OOP check |
property_exists | التحقق من وجود خاصية | property_exists($obj,'prop') | property_exists($dict,'terms'); | OOP check |
define | تعريف ثابت | define("NAME","value") | define("PI",3.14); | ثابت عالمي |
const | تعريف ثابت بالكلاس | const NAME="value" | const VERSION="1.0"; | OOP constant |
die | إيقاف التنفيذ | die("message") | die("Fatal error"); | Debugging |
exit | إنهاء البرنامج | exit("msg") | exit("Done"); | Debugging |
microtime | وقت النظام بالدقة | microtime(true) | echo microtime(true); | Performance |
time | وقت UNIX | time() | echo time(); | Performance |
rand | رقم عشوائي | rand(0,100) | echo rand(1,10); | Useful for testing |
mt_rand | رقم عشوائي محسّن | mt_rand(0,100) | mt_rand(1,10); | Faster |
serialize | تحويل للكود القابل للتخزين | serialize($obj) | serialize($dict); | Storing objects |
unserialize | إعادة تحويل | unserialize($str) | unserialize($data); | Retrieve objects |
json_encode | تحويل JSON | json_encode($arr) | json_encode($dict); | API usage |
json_decode | فك JSON | json_decode($str,true) | json_decode($json,true); | API usage |
require | استدعاء ملف | require 'file.php'; | require 'config.php'; | Dependency |
include | استدعاء ملف | include 'file.php'; | include 'header.php'; | Optional include |
require_once | تجنب التكرار | require_once 'file.php'; | require_once 'config.php'; | Avoid duplicates |
include_once | تجنب التكرار | include_once 'file.php'; | include_once 'header.php'; | Avoid duplicates |
global | الوصول لمتغير عالمي | global $var | global $config; | Scope management |
static | متغير ثابت داخل دالة | static $count=0 | static $count=0; | Persistence in function |
final | منع الوراثة أو override | final class | final function | OOP restriction |
abstract | تعريف كلاس مجرد | abstract class | abstract class Base{} | OOP pattern |
interface | تعريف واجهة | interface Name{} | interface Logger{} | OOP contract |
implements | تنفيذ واجهة | class MyClass implements Name{} | class App implements Logger{} | OOP |
extends | وراثة كلاس | class Child extends Parent{} | class Admin extends User{} | OOP |
clone | نسخ كائن | $copy=clone $obj | $copy=clone $dict; | Duplicate object |
isset | التحقق من وجود | isset($var) | isset($dict['PHP']); | Avoid errors |
empty | التحقق من فارغ | empty($var) | empty($dict['PHP']); | Avoid errors |
trim | إزالة المسافات | trim($str) | trim(" PHP "); | Clean strings |
ltrim | إزالة المسافات من اليسار | ltrim($str) | ltrim(" PHP"); | Clean strings |
rtrim | إزالة المسافات من اليمين | rtrim($str) | rtrim("PHP "); | Clean strings |
explode | تقسيم النص | explode(",",$str) | explode(",","a,b"); | String parsing |
implode | دمج مصفوفة | implode(",",$arr) | implode(",",$arr); | String join |
strtolower | تحويل لحروف صغيرة | strtolower($str) | strtolower("PHP"); | Normalization |
strtoupper | تحويل لحروف كبيرة | strtoupper($str) | strtoupper("php"); | Normalization |
substr | اقتطاع النص | substr($str,0,3) | substr("PHP",0,2); | Text manipulation |
strpos | موقع النص | strpos($str,"P") | strpos("PHP","P"); | Search in string |
str_replace | استبدال النص | str_replace("a","b",$str) | str_replace("PHP","PHP7","PHP"); | Text replace |
preg_match | مطابقة regex | preg_match("/pattern/",$str) | preg_match("/PHP/",$str); | Regex search |
preg_replace | استبدال regex | preg_replace("/pattern/","x",$str) | preg_replace("/PHP/","PHP7",$str); | Regex replace |
htmlspecialchars | تحويل الأحرف الخاصة | htmlspecialchars($str) | htmlspecialchars("<b>Hi</b>"); | Security |
nl2br | تحويل newline ل<br> | nl2br($str) | nl2br("Line\nLine2"); | Display formatting |
strip_tags | إزالة HTML | strip_tags($str) | strip_tags("<b>Hi</b>"); | Security |
header | إرسال هيدر HTTP | header("Location: url") | header("Location: index.php"); | Redirection |
setcookie | إنشاء كوكي | setcookie("name","value") | setcookie("user","Mamad"); | Persistence |
session_start | بدء جلسة | session_start(); | session_start(); | Session handling |
$_GET | جلب بيانات GET | $_GET['key'] | $_GET['id']; | Request handling |
$_POST | جلب بيانات POST | $_POST['key'] | $_POST['name']; | Request handling |
$_SESSION | تخزين جلسة | $_SESSION['key'] | $_SESSION['user']="Mamad"; | Session storage |
$_COOKIE | جلب كوكي | $_COOKIE['key'] | $_COOKIE['user']; | Session storage |
$_SERVER | معلومات السيرفر | $_SERVER['REQUEST_METHOD'] | $_SERVER['PHP_SELF']; | Server info |
die | إيقاف التنفيذ | die("msg") | die("Error"); | Debugging |
exit | إنهاء البرنامج | exit("msg") | exit("Done"); | Debugging |
eval | تنفيذ كود | eval('$a=5;') | eval('$x=5;'); | Use with caution |
📊 Complete بي إتش بي Properties Reference
Property | Values | Default | Description | بي إتش بي Support |
---|---|---|---|---|
error_reporting | E_ALL, E_NOTICE, E_WARNING, E_ERROR | E_ALL | تحديد مستوى عرض الأخطاء | PHP 5+ |
display_errors | On, Off | Off | عرض الأخطاء على المتصفح | PHP 5+ |
memory_limit | عدد ميغابايت | 128M | تحديد أقصى ذاكرة للكود | PHP 5+ |
max_execution_time | ثواني | 30 | أقصى زمن لتنفيذ السكربت | PHP 5+ |
post_max_size | عدد ميغابايت | 8M | أقصى حجم POST | PHP 5+ |
upload_max_filesize | عدد ميغابايت | 2M | أقصى حجم رفع ملفات | PHP 5+ |
session.gc_maxlifetime | ثواني | 1440 | مدة بقاء جلسة | PHP 5+ |
default_charset | UTF-8, ISO-8859-1 | UTF-8 | ترميز النصوص الافتراضي | PHP 5+ |
date.timezone | منطقة زمنية | UTC | تحديد المنطقة الزمنية | PHP 5+ |
log_errors | On, Off | On | تسجيل الأخطاء في ملف اللوج | PHP 5+ |
error_log | مسار ملف | php_errors.log | ملف لتسجيل الأخطاء | PHP 5+ |
max_input_vars | عدد | 1000 | أقصى عدد متغيرات للادخال | PHP 5+ |
ملخص وخطوات تالية في بي إتش بي:
قاموس PHP يقدم للمطورين مرجعًا عمليًا لفهم كل جوانب لغة PHP، من الهياكل الأساسية للبيانات، الدوال، البرمجة الكائنية، إلى خوارزميات متقدمة وإدارة الأخطاء. من خلال هذا القاموس، يصبح المطور قادرًا على كتابة كود متين، آمن، وفعال ضمن بنية التطبيقات الحديثة.
للتوسع في تطوير بي إتش بي، يُنصح بدراسة موضوعات مثل تصميم الأنماط (Design Patterns)، إدارة قواعد البيانات المتقدمة، تحسين الأداء، ودمج PHP مع أطر العمل الحديثة مثل Laravel أو Symfony. كما يجب ممارسة كتابة البرامج وحل التحديات الواقعية لتعزيز المهارات العملية.
الموارد الإضافية تتضمن الوثائق الرسمية للغة PHP، الدورات التدريبية المتقدمة، ومشاريع مفتوحة المصدر التي يمكن من خلالها مشاهدة أفضل الممارسات وتطبيقها في مشاريع شخصية أو مؤسسية.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى