لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/01/20 في كل الموقع
-
السبب في ذلك هو أن هذا ال input يقع في داخل frame "مربع آخر و ليس الصفحة نفسها". لذلك يجب الانتقال إليه أولًا: #switch it first self.driver.switch_to.frame(driver.find_element_by_id('')) #المشار إليه في الصورة frame الخاص بال id ال self.driver.find_element_by_id('stop-datetime').send_keys('8/31/2020 11:14 AM')2 نقاط
-
في مقال اليوم نقدم دليلًا سريعًا مدعمًا بالأمثلة العملية شرح لغة PHP التي تعد واحدة من لغات البرمجة القوية المستخدمة بشكل أساسي لتطوير الويب، فعلى الرغم من ظهور العديد من لغات البرمجة الأحدث في مجال تطوير الويب إلا أن لغة PHP لا تزال اللغة الأكثر شيوعًا واستخدامًا، وهي تتطور باستمرار لإصلاح أي عيوب أو أخطاء فيها وتعزيز أمان وأداء المواقع المبنية باستخدامها. نبذة مختصرة عن لغة PHP يشير اسم PHP إلى عبارة Hypertext Pre-processor أي المعالج المسبق للنصوص الفائقة وكلمة النصوص الفائقة تعني النصوص التي تملك روابط تنقلك لنصوص أو صفحات صفحات ويب أخرى عند النقر فوقها. وهي لغة برمجة مفتوحة المصدر وشائعة الاستخدام تستخدم في إنشاء وتطوير مواقع الويب الديناميكية، وقد طور باستخدامها أكثر من 75% من المواقع الموجودة على شبكة الإنترنت بحسب w3techs. تتميز لغة PHP بسهولتها ودعمها لمجموعة متنوعة من قواعد البيانات وبروتوكولات الإنترنت وتوفيرها للعديد من مكتبات وأطر العمل المساعدة للمبرمجين، وما زاد من شهرتها وحافظ على مكانتها وأهميتها بين مطوري الويب اعتماد العديد من منصات إدارة المحتوى ومنصات التجارة الإلكترونية المشهورة عليها مثل ووردبريس WordPress ودروبال Drupal وماجنتو Magneto وغيرها الكثير، فإذا كنت مهتمًا بمجال تطوير الويب فإن تعلم لغة PHP خيار مناسب وغني بالفرص. تعمل لغة PHP على الخادم server-side بخلاف لغات برمجة أخرى تعمل على المتصفح أو العميل client-side مثل لغة جافا سكريبت JavaScript أي أنها لا تنفذ الشيفرة البرمجية في متصفح الويب، بل تشغلها مباشرة على خادم الويب وبعدها يرسل خادم الويب نتيجة التنفيذ إلى المتصفح لعرضها، وتفترض هذه المقالة أنك تمتلك معلومات أساسية عن لغة PHP وطريقة عملها في الخلفية عند زيارتك لصفحة ويب من خلال متصفح الويب الخاص بك، وبأنك تعرف مسبقًا كيف تحول جهاز حاسوبك إلى خادم محلي وكيف تعد كل الأدوات اللازمة لكتابة أوامر PHP وتنفيذها، فإذا لم تكن على دراية بهذه المعلومات الأساسية أنصحك قبل ذلك ان تقرأ مقال تعرف على لغة PHP ثم تتابع قراءة هذا المقال. ملاحظة: تعمل الأكواد الواردة في الفقرات التالية مع إصدار PHP 5 والإصدارات اللاحقة فقد قدم الإصدار الخامس من PHP العديد من التغييرات والتحسينات المهمة على الإصدارات السابقة وأبرز هذه التغييرات دعم البرمجة كائنية التوجه oop في PHP ووفر العديد من تحسينات الأداء والأمان، وتابعت الإصدارات اللاحقة التحسين وأضافت ميزات جديدة للغة. كيف تكتب أكواد PHP تكتب أكواد PHP بعد وسم الفتح php?> وقبل وسم الإغلاق <? ثم تحفظ داخل ملفات لها الامتداد .php على خادم الويب، ومن الأفضل عمليًا تجاهل كتابة وسم الإغلاق إذا كان ملف php يحتوي على شفرة php فقط، لتلافي نتيجة خرج غير متوقعة. <?php echo "Hello World!"; ?> كما يمكن أن تدمج أكواد PHP مع أكواد HTML لإنشاء صفحات ويب ديناميكية بالشكل التالي: <!DOCTYPE html> <html> <head> <title> HTML and PHP </title> </head> <body> <h1>PHP code mixed with HTML</h1> <?php echo "Hello World!"; ?> </body> </html> التعليقات Comments التعليقات هي أجزاء من الكود البرمجي لا تنفذ عند تشغيل البرنامج وهي تستخدم لشرح وتوثيق الكود وتوضيح عمله للمطورين الآخرين الذين يقرأون هذا الكود، أو لتوضيحها للمبرمج الذي كتبها نفسه فقد ينسى ما كتبه عند العودة لقراءة الكود بعد فترة من الزمن. يمكن كتابة التعليقات في لغة PHP بعدة طرق كما في المثال التالي: // استخدم علامة القوسين المائلين // لبدأ تعليق بسطر واحد // يمكن استخدام العلامة # لكن علامة // أكثر شيوعيا. /* إحاطة نص بالقوس المائل متبوعا بالنجمة بداية وبالنجمة متبوعة بالقوس المائل نهاية يجعل من هذا النص تعليقا متعدد الأسطر */ طباعة الخرج في PHP يمكنك استخدم تعليمة echo أو print لطباعة الخرج أو عرض البيانات المطلوبة على صفحة الويب. print('Hello '); // بدون سطر فاصل "Hello " طباعة استخدام القوسين ( ) اختياري مع تعليمتي echo و print echo "World\n"; // مع سطر فاصل "World" طباعة يجب أن تنتهي كل العبارات في لغة PHP بالفاصلة المنقوطة ";" وأي شيء مكتوب خارج وسوم php?> ستتم طباعته على الشاشة بشكل تلقائي. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن الأنماط Types والمتغيرات Variables تستخدم المتغيرات في PHP لتخزين وحفظ قيم البيانات، ويمكن أن تخزن هذه المتغيرات قيمًا مختلفة كالأرقام والنصوص والقيم المنطقية. يمكنك التصريحعن المتغيرات في PHP بكتابة الرمز $ يليه مباشرة اسم المتغير، ويجب ان تبدأ أسماء المتغيرات تبدأ بحرف أو تسطيرة سفلية _ يتبعها بأي عدد من الأحرف أو الأرقام أو التسطيرات السفلية. وتكون أسماء المتغيرات حساسة لحالة الأحرف case-sensitive. من أهم أنماط المتغيرات في لغة PHP نذكر: المتغيرات المنطقية Boolean ويملك المتغير من هذا النمط القيمة true أي صحيح أو القيمة false أي خاطئ. $boolean = true; // TRUE أو True $boolean = false; // FALSE أو False الأعداد الصحيحة Integer حيث يملك المتغير من هذا النمط قيمة صحيحة موجبة أو سالبة $int1 = 12; // => 12 $int2 = -12; // => -12 $int3 = 012; // => 10 (البادئة 0 تدل على عدد ثماني) $int4 = 0x0F; // => 15 (0x تدل على رقم ستة عشري) المحارف الصحيحة الثنائية Binary integer literals متاحة اعتبارًا من PHP 5.4.0 وهي تستخدم لتمثيل الأعداد الصحيحة بالنظام الثاني $int5 = 0b11111111; // 255 (0b يدل على عدد ثنائي) الأرقام العائمة Floats أو (المضاعفة doubles) وهي تستخدم لتمثيل الأعداد العشرية $float = 1.234; $float = 1.2e3; $float = 7E-10; لحذف متغير في PHP وتحرير موارد الذاكرة المحجوزة لأجله نستخدم تعليمة unset unset($int1); يمكن إجراء العمليات الحسابية على المتغيرات العددية كما يلي: $sum = 1 + 1; // 2 $difference = 2 - 1; // 1 $product = 2 * 2; // 4 $quotient = 2 / 1; // 2 كما يمكن إجراء العمليات الحسابية المختزلة بالشكل التالي: $number = 0; $number += 1; // بمقدار 1 $number زيادة echo $number++; // (طباعة 1 (الزيادة بعد التقييم echo ++$number; // (طباعة 3 (الزيادة قبل التقييم $number /= $float; // $number قسمة واسناد ناتج القسمة إلى السلاسل النصية Strings وهي تستخدم لتخزين النصوص ويجب أن تكون النصوص محدودة ضمن إشارة تنصيص واحدة ’ من كل جانب كما يلي: $sgl_quotes = '$String'; // => '$String' تجنب استخدام علامات التنصيص المزدوجة إلا في حالة تضمين متغيرات أخرى $dbl_quotes = "This is a $sgl_quotes."; // => 'This is a $String.' تحدد المحارف الخاصة حصريًا باقتباسات مزدوجة $escaped = "This contains a \t tab character."; $unescaped = 'This just contains a slash and a t: \t'; قم بإحاطة المتغيرات بالقوسين المائلين عند الحاجة $apples = "I have {$number} apples to eat."; $oranges = "I have ${number} oranges to eat."; $money = "I have $${number} in the bank."; منذ الإصدار الخامس يمكن استخدام nowdocs في حالة عدة أسطر غير مجمعة $nowdoc = <<<'END' Multi line string END; ستقوم heredocs بتجميع النصوص $heredoc = <<<END Multi line $sgl_quotes END; يتم وصل النصوص أو دمجها باستخدام النقطة "." echo 'This string ' . 'is concatenated'; يمكن تمرير النصوص كبارامتر لـ echo echo 'Multiple', 'Parameters', 'Valid';// 'MultipleParametersValid' يعيد الثوابت في PHP يعرّف الثابت باستخدام ()define ولا يمكن تغيير قيمته خلال فترة التشغيل. ويجب أن تبدأ أسماء الثوابت الصحيحة بحرف أو تسطيرة سفلية, متبوعة بأية حروف أو أرقام أو تسطيرات سفلية. define("FOO", "something"); الوصول إلى المتغير الثابت متاح دون الحاجة الى استخدام الرمز $ echo FOO; // 'something' يعيد echo 'This outputs ' . FOO; // 'This outputs something' يعيد المصفوفات Arrays المصفوفات في PHP هي هياكل بيانات تسمح بتخزين مجموعة من القيم ضمن متغير واحد، وكل المصفوفات في PHP هي مصفوفات مترابطة (تسمى hashmaps في بعض اللغات البرمجية) وتعمل في جميع إصدارات php $associative = array('One' => 1, 'Two' => 2, 'Three' => 3); تم إدخال تركيب قواعدي syntax جديد في PHP 5.4 $associative = ['One' => 1, 'Two' => 2, 'Three' => 3]; echo $associative['One']; // 1 تطبع إضافة عنصر للمصفوفة المترابطة $associative['Four'] = 4; القوائم المحرفية يسند لها مفاتيح صحيحة حكمًا $array = ['One', 'Two', 'Three']; echo $array[0]; // => "One" إضافة عنصر إلى نهاية المصفوفة $array[] = 'Four'; أو array_push($array, 'Five'); حذف عنصر من مصفوفة unset($array[3]); المزيد حول تعلميات الطباعة في PHP echo('Hello World!'); تقوم التعليمة السابقة بطباعة !Hello World على شاشة الاظهار القياسية stdout، وstdout هي صفحة الوب إذا كنت تستخدم متصفحًا print('Hello World!'); // echo مشابه لـ // هي أيضًا من تركيبات اللغة لذلك يمكنك إلغاء الأقواس echo و print echo 'Hello World!'; print 'Hello World!'; $paragraph = 'paragraph'; echo 100; // اطبع المتغيرات العددية مباشرة echo $paragraph; // أو المتغيرات إذا تم إعداد الوسوم القصيرة المفتوحة أو كانت نسخة PHP الخاصة بك 5.4.0 أو أحدث يمكنك استخدام قواعد بناء الجمل القصيرة لـ echo <p><?= $paragraph ?></p> $x = 1; $y = 2; $x = $y; المتغير x$ يحتوي نفس قيمة المتغير y$ $z = &$y; المتغير z$ يحتوي إسناد إلى قيمة y$، وأي تغيير في قيمة z$سيغير قيمة y$ وبالعكس المتغير x$ تبقى قيمته بدون تغيير كقيمة y$ الأصلية echo $x; // => 2 echo $z; // => 2 $y = 0; echo $x; // => 2 echo $z; // => 0 تخرج التفريغات Dumps نوع وقيمة المتحول إلى شاشة العرض القياسية stdout var_dump($z); // int(0) يطبع تطبع التعليمة Print المتغيرات إلى شاشة الإظهار القياسية stdout بصيغة مقروءة للإنسان print_r($array); // Array ( [0] => One [1] => Two [2] => Three ) يطبع العمليات المنطقية $a = 0; $b = '0'; $c = '1'; $d = '1'; يقوم assert بإصدار تنبيه إذا كانت معطياته غير صحيحة وهذه المقارنة ستكون دومًا صحيحة حتى إذا كانت الأنواع مختلفة assert($a == $b); // equality المساواة assert($c != $a); // inequality عدم المساواة assert($c <> $a); // alternative inequality عدم المساواة بشكل بديل assert($a < $c); assert($c > $b); assert($a <= $b); assert($c >= $d); التالي سيكون صحيحًا فقط في حال كانت القيم متساوية ومن نفس النوع assert($c === $d); assert($a !== $d); assert(1 === '1'); assert(1 !== '1'); المشغل `Spaceship` <=> (منذ PHP 7) يعيد 0 إذا كانت القيم على طرفيه متساوية، ويعيد 1 إذا كانت القيمة على اليسار أكبر، ويعيد -1 إذا كانت القيمة على اليمين أكبر $a = 100; $b = 1000; echo $a <=> $a; // النتيجة 0 كونهما متساويين echo $a <=> $b; // $a < $b النتيجة -1 كون echo $b <=> $a; // $b > $aالنتيجة 1 كون يمكن تحويل المتغيرات إلى أنواع مختلفة بحسب استخدامها $integer = 1; echo $integer + $integer; // => 2 $string = '1'; echo $string + $string; // => 2 (تم تحويل النصوص الى أعداد صحيحة) $string = 'one'; echo $string + $string; // => 0 النتيجة 0 لأن المشغل + لا يستطيع موائمة النص `one` الى رقم. موائمة الأنواع Type casting يمكن استخدامها للتعامل مع متغير من نوع معين كنوع آخر. $boolean = (boolean) 1; // => true $zero = 0; $boolean = (boolean) $zero; // => false يوجد أيضًا توابع مخصصة لموائمة أغلب الأنواع $integer = 5; $string = strval($integer); null هي قيمة خالية $var = null; بنى التحكم Control Structures تمكنك بنى التحكم في لغة PHP من التحكم في تنفيذ الكود البرمجي بناءً على شروط معينة أو تكرار تنفيذ جزء من الكود عدة مرات ومن أشهر بنى التحكم المستخدمة في لغة PHP العبارات الشرطية if وعبارات الحلقات مثل for و while وعبارات switch. if (true) { print 'I get printed'; } if (false) { print 'I don\'t'; } else { print 'I get printed'; } if (false) { print 'Does not get printed'; } elseif (true) { print 'Does'; } المشغل الثلاثي ternary print (false ? 'Does not get printed' : 'Does'); بدأ استخدام المشغل الثلاثي المختصر من PHP 5.3 وهو مكافئ لـ "$x ? $x : 'Does'"" $x = false; print($x ?: 'Does'); بدأ مشغّل دمج القيم الفارغة null coalesce operator من php 7 $a = null; $b = 'Does print'; echo $a ?? 'a is not set'; // 'a is not set' تطبع echo $b ?? 'b is not set'; // 'Does print' تطبع $x = 0; if ($x === '0') { print 'Does not print'; } elseif ($x == '1') { print 'Does not print'; } else { print 'Does print'; } القواعد البديلة لبناء الجمل مفيدة لبناء النماذج <?php if ($x): ?> This is displayed if the test is truthy. <?php else: ?> This is displayed otherwise. <?php endif; ?> استخدم التعليمة switch لتوفير كتابة جزء من العمليات المنطقية كما يلي switch ($x) { case '0': print 'Switch does type coercion'; break; // 'two' و'three' وإلا سينتقل الى الحالة break يجب تضمين case 'two': case 'three': // 'two' أو 'three' تساوي $variable قم بعمل شيء ما اذا كانت قيمة break; default: // قم بعمل الاجراء الافتراضي } الحلقات while، do…while، for هي حلقات مألوفة غالبًا وتستخدم لتكرار تنفيذ مجموعة من التعليمات البرمجية كما يلي: $i = 0; while ($i < 5) { echo $i++; } // "01234" اطبع $i = 0; do { echo $i++; } while ($i < 5); // "01234" اطبع for ($x = 0; $x < 10; $x++) { echo $x; } // "0123456789" اطبع $wheels = ['bicycle' => 2, 'car' => 4]; يمكن أن تعمل حلقات foreachعلى المصفوفة بالشكل التالي: foreach ($wheels as $wheel_count) { echo $wheel_count; } // "24"اطبع ويمكنك لحلقة foreach المرور إما عبر المفاتيح أو القيم الخاصة بالمصفوفة foreach ($wheels as $vehicle => $wheel_count) { echo "A $vehicle has $wheel_count wheels"; } $i = 0; while ($i < 5) { if ($i === 3) { break; // while اخرج من حلقة } echo $i++; } // "012" اطبع for ($i = 0; $i < 5; $i++) { if ($i === 3) { continue; // تجاوز هذا التكرار من الحلقة } echo $i; } // "0124" اطبع الدوال Functions الدوال في البرمجة هي مجموعات من الأوامر التي لها اسم محدد وتستخدم لأداء مهمة معينة وهي تساعد في تنظيم واختصار التعليمات البرمجية. ونعرّف الدالة PHP باستخدام الكلمة المفتاحية function function my_function () { return 'Hello'; } echo my_function(); // => "Hello" الاسم المقبول للدالة يجب أن يبدأ بحرف أو تسطيرة سفلية متبوعة بأي عدد من الأحرف ،الأرقام، أو التسطيرات السفلية function add ($x, $y = 1) { // اختيارية وقيمتها الإفتراضية تساوي 1 $y $result = $x + $y; return $result; } echo add(4); // => 5 echo add(4, 2); // => 6 لا يمكن الوصول للمتغير result$ من خارج الدالة واستخدام الأمر ;print $result هنا سيعطي خطأ منذ النسخة PHP 5.3 أصبح من الممكن تعريف دوال مجهولة anonymous functions أي دوال لا تملك اسمًا وتخزن قيمها في متغيرات كما يلي: $inc = function ($x) { return $x + 1; }; echo $inc(2); // => 3 function foo ($x, $y, $z) { echo "$x - $y - $z"; } يمكن للدوال أن تعيد دوالًا أخرى function bar ($x, $y) { // استخدم use لإحضار المتغيرات الخارجية return function ($z) use ($x, $y) { foo($x, $y, $z); }; } $bar = bar('A', 'B'); $bar('C'); // "A - B - C" يطبع يمكنك استدعاء الدوال المسماة named functions باستخدام النصوص $function_name = 'add'; echo $function_name(1, 2); // => 3 وهو هام من أجل تحديد أي دالة يتوجب تشغيلها برمجيًا، أو استخدم الدالة التالية call_user_func (callable $callback [, $parameter [, … ]]); يمكنك الحصول على كل البارمترات الممررّة للدالة function parameters() { $numargs = func_num_args(); if ($numargs > 0) { echo func_get_arg(0) . ' | '; } $args_array = func_get_args(); foreach ($args_array as $key => $arg) { echo $key . ' - ' . $arg . ' | '; } } parameters('Hello', 'World'); // Hello | 0 - Hello | 1 - World | يمكنك الحصول على عدد متغير من المعطيات ابتداء من PHP 5.6 function variable($word, ...$list) { echo $word . " || "; foreach ($list as $item) { echo $item . ' | '; } } variable("Separate", "Hello", "World"); // Separate || Hello | World | التضمين في PHP باستخدام include و require يفيد التضمين في PHP لتضمين محتوى ملف في ملف آخر ويمكن القيام بتضمين ملف في آخر باستخدام include كما يلي: include 'my-file.php'; وبهذا تكون الشفرة ضمن الملف my-file.php متاحة ضمن مجال الرؤية، إذا لم يكن بالإمكان تضمين الملف (على سبيل المثال إذا كان الملف غير موجود ) يظهر تنبيه. include_once 'my-file.php'; إذا كانت شفرة الملف my-file.php متضمنة في مكان أخر ، لن يتم تضمينها ثانية. وهذا يمنع الاخطاء التي تحدث بسبب تكرار التصريح عن الصفوف require 'my-file.php'; require_once 'my-file.php'; تقوم الدالة ()require بنفس عمل ()include إلا أنها ستتسبب بخطأ فادح إذا لم يتمكن من تضمين الملف. محتويات ملف my-include.php <?php return 'Anything you like.'; يمكن الدوال Includes، requires أيضًا أن تعيد قيمة $value = include 'my-include.php'; تضمن الملفات بالاعتماد على المسار المعطى، وإذا لم يحدد المسار يتم اعتماد مسار توجيه الاعداد include_path فإذا لم يتم إيجاد الملف يتم البحث في مسار استدعاء السكريبت ومسار العمل الحالي قبل الاعلان عن الاخفاق الأصناف Classes في PHP الأصناف classes في البرمجة هي أنماط بيانات خاصة تستخدم كقوالب لإنشاء الكائنات objects وتعرف الأصناف في PHP باستخدام العبارة class class MyClass { const MY_CONST = 'value'; // ثابت static $staticVar = 'static'; المتغيرات الثابتة Static ومجال رؤيتها public static $publicStaticVar = 'publicStatic'; يمكن الوصول إليها خلال الصنف فقط private static $privateStaticVar = 'privateStatic'; يمكن الوصول اليها من خلال الصنف والأصناف المشتقة protected static $protectedStaticVar = 'protectedStatic'; يجب تحديد مجال الرؤية للخصائص Properties public $property = 'public'; public $instanceProp; protected $prot = 'protected'; يمكن الوصول إليها من الصنف والأصناف الفرعية private $priv = 'private'; // يمكن الوصول إليها من الصنف فقط قم بإنشاء الباني باستخدام __construct public function __construct($instanceProp) { // $this قم بالوصول إلى متغيرات الحالة باستخدام $this->instanceProp = $instanceProp; } تعرًف الطرق methods كدوال داخل الصنف public function myMethod() { print 'MyClass'; } تجعل الكلمة المفتاحية final الدالة غير قابلة للتحميل الزائد unoverridable final function youCannotOverrideMe() { } الطرق السحرية Magic Methods الطرق السحرية في PHP هي طرق أو وظائف خاصة يبدأ اسمها بشرطة سفلية مزدوجة تسمح لك بإضافة وظائف إلى الأصناف دون الحاجة لتعريف هذه الدوال بشكل صريح. على سبيل المثال الدالة toString__ هي دالة سحرية تستدعى تلقائيًا عند استخدام عمليات أو وظائف معينة تتطلب تحويل الكائن إلى سلسلة نصية public function __toString() { return $property; } ومن الدوال السجرية لدينا دالة الهدم ()destruct__ وهي عكس دالة البناء()construct__ وتستدعى عندما لا تعود هنالك حاجة لأن يكون العنصر مشارًا إليه كمرجع public function __destruct() { print "Destroying"; } الكلمة المفتاحية static في PHP تستخدم الكلمة المفتاحية static في PHP لتعريف خصائص الصنف والطرق على أنها ثابتة وهذا يجعلها قابله للوصول بدون الحاجة إلى إنشاء كائن من الصنف. الخاصية المعرّفة بأنها ثابتة لا يمكن الوصول إليها من العنصر المشتق من الصنف (لكن يمكن ذلك في الطرق الثابتة) public static function myStaticMethod() { print 'I am static'; } ثوابت الصنف Class constants يمكن الوصول إليها دائمًا بشكل ثابت echo MyClass::MY_CONST; // 'value' الخرج; echo MyClass::$staticVar; // 'static' الخرج; MyClass::myStaticMethod(); // 'I am static' الخرج; اشتقاق حالات الأصناف instance باستخدام new $my_class = new MyClass('An instance property'); استخدام القوسين اختياري إذا كنت لا تريد تمرير أيّة معطيات يمكننك الوصول إلى أعضاء الصنف class members باستخدام <- echo $my_class->property; // => "public" echo $my_class->instanceProp; // => "An instance property" $my_class->myMethod(); // => "MyClass" قم بتوسيع الصنف باستخدام extends class MyOtherClass extends MyClass { function printProtectedProperty() { echo $this->prot; } // التحميل الزائد للطرق Override function myMethod() { parent::myMethod(); print ' > MyOtherClass'; } } $my_other_class = new MyOtherClass('Instance prop'); $my_other_class->printProtectedProperty(); // => "protected" يطبع $my_other_class->myMethod(); // "MyClass > MyOtherClass" يطبع final class YouCannotExtendMe { } يمكنك استخدام الطرق السحرية magic methods لإنشاء دوال الجلب أو الإرجاع getters وداول الاسناد setters class MyMapClass { private $property; public function __get($key) { return $this->$key; } public function __set($key, $value) { $this->$key = $value; } } $x = new MyMapClass(); echo $x->property; // __get() سوف تستخدم طريقة $x->property = 'Something'; // __set() سوف تستخدم طريقة يمكن أن تكون الأصناف تجريدية (باستخدام الكلمة المفتاحية abstract) أو واجهات تنفيذ (باستخدام الكلمة المفتاحية implements). الواجهات Interfaces في لغة PHP الواجهات في PHP هي طريقة مجردة لتعريف الكائنات، ويصرح عن الواجهة بالكلمة المفتاحية interface. interface InterfaceOne { public function doSomething(); } interface InterfaceTwo { public function doSomethingElse(); } يمكن أن توسّع الواجهات interface InterfaceThree extends InterfaceTwo { public function doAnotherContract(); } abstract class MyAbstractClass implements InterfaceOne { public $x = 'doSomething'; } class MyConcreteClass extends MyAbstractClass implements InterfaceTwo { public function doSomething() { echo $x; } public function doSomethingElse() { echo 'doSomethingElse'; } } يمكن أن يكون للأصناف أكثر من واجهة واحدة class SomeOtherClass implements InterfaceOne, InterfaceTwo { public function doSomething() { echo 'doSomething'; } public function doSomethingElse() { echo 'doSomethingElse'; } } السمات Traits trait هي ميزة تستخدم للسماح بإعادة استخدام مجموعة من الوظائف داخل الأصناف ويمكنك اعتبارها بمثابة طريقة لتضمين سلوك مشترك بين الأصناف وهي ميزة متوفره بدءًا من النسخة PHP 5.4.0 ويصرّح عنها باستخدام trait trait MyTrait { public function myTraitMethod() { print 'I have MyTrait'; } } class MyTraitfulClass { use MyTrait; } $cls = new MyTraitfulClass(); $cls->myTraitMethod(); // Prints "I have MyTrait" فضاءات الأسماء Namespaces في PHP تستخدم فضاءات الأسماء في PHP لتنظيم الشيفرة وتجنب تعارض أسماء الأصناف والوظائف والمتغيرات فهي تجمع العناصر ضمن في مجموعات أو مساحات لها نفس الاسم لتميزها عن غيرها وللقيام بذلك نكتب namespace كأول عبارة في الملف. دعونا نتظاهر بأن هذا ليس هو الحال <?php افتراضيًا, توجد الأصناف في namespace عام, ويمكن أن تستدعى صراحة بـ backslash $cls = new \MyClass(); ضبط namespace لملف namespace My\Namespace; class MyClass { } من ملف آخر $cls = new My\Namespace\MyClass; أو من داخل namespace آخر namespace My\Other\Namespace; use My\Namespace\MyClass; $cls = new MyClass(); أو يمكنك استبدال namespace باسم مستعار namespace My\Other\Namespace; use My\Namespace as SomeOtherNamespace; $cls = new SomeOtherNamespace\MyClass(); الربط الساكن المتأخر Late Static Binding class ParentClass { public static function who() { echo "I'm a " . __CLASS__ . "\n"; } public static function test() { // على الصف الذي عُرّف التابع ضمنه self تؤشر self::who(); // على الصف الذي استدعي التابع منه static تؤشر static::who(); } } ParentClass::test(); /* ParentClass أنا ParentClass أنا */ class ChildClass extends ParentClass { public static function who() { echo "But I'm " . __CLASS__ . "\n"; } } ChildClass::test(); /* ParentClass أنا ChildClass ولكن أنا */ الثوابت السحرية Magic constants الثوابت السحرية هي ثوابت معرفة مسبقًا في PHP يبدأ اسمها وينتهي بشرطتين سفليتين ولها استخداماات مختلفة، على سبيل المثال للحصول على اسم الصنف الحالي نستخدم الثابت السحري __CLASS__ داخل تصريح الصنف كما يلي: echo "Current class name is " . __CLASS__; وللحصول على مسار الدليل الكامل لملف نستخدم __DIR__ echo "Current directory is " . __DIR__; الاستخدام النموذجي require __DIR__ . '/vendor/autoload.php'; الحصول على المسار الكامل للملف echo "Current file path is " . __FILE__; الحصول على اسم الدالة الحالية echo "Current function name is " . __FUNCTION__; الحصول على رقم السطر الحالي echo "Current line number is " . __LINE__; الحصول على اسم الطريقة الحالية. يرجع قيمة فقط عندما يستخدم داخل تصريح سمة أو كائن echo "Current method is " . __METHOD__; الحصول على اسم namespace الحالي echo "Current namespace is " . __NAMESPACE__; الحصول على اسم السمة الحالية. ترجع قيمة فقط عندما تستخدم داخل التصريح عن السمة أو الكائن. echo "Current trait is " . __TRAIT__; معالجة الأخطاء Error Handling في PHP يمكن أن تتم معالجة أخطاء بسيطة باستخدام كتلة try catch try { // افعل شيء ما } catch (Exception $e) { // معالجة استثناء } عند استخدام كتلة try catch في بيئة namespace استخدم التالي try { // افعل شيء ما } catch (\Exception $e) { // معالجة استثناء } استثناءات مخصّصة class MyException extends Exception {} try { $condition = true; if ($condition) { throw new MyException('Something just happened'); } } catch (MyException $e) { // معالجة استثنائية } ترجمة -وبتصرّف- للمقال Learn PHP in Y Minutes1 نقطة
-
SQL أو لغة الاستعلامات البنيوية (Structured Query Language) هي لغة برمجة متخصصة تُستخدَم لمعالجة وإدارة قواعد البيانات. وتُنطق سي كويل (See-Quel). تعد اللغة القياسية لأنظمة إدارة قواعد البيانات (RDBMS)، وتُستخدم تعليمات وأوامر SQL لإجراء عمليات مباشرة على البيانات، مثل: تحديث البيانات إدراج سجلات جديدة في قاعدة البيانات حذف السجلات استخلاص البيانات والتنقيب عنها إنشاء جداول لتخزين البيانات إنجاز مهام إدارية على قاعدة البيانات، مثل تأمين قاعدة البيانات وإنشاء النسخ الاحتياطية وإدارة المستخدمين. تاريخ SQL طوّرت شركة IBM لغة SQL في بداية السبعينات بإسهام من بويس رايموند (Raymond Boyce) ودونالد شامبرلين (Donald Chamberlin)، وكانت تُسمى آنذاك SEQUEL. كان الهدف من تطويرها هو إدارة ومعالجة نظام R، وهو نظام شبه علائقي لمعالجة قواعد البيانات (quasi-relational database management system). سنة 1986، اعتمدت كل من المنظمة الأمريكية للمقاييس (ANSI) والمنظمة الدولية للمقاييس (ISO) لغة SQL كمقياس مرجعي، وقد تعاقبت بعد ذلك 9 إصدارات جديدة من المعيار، سنوات: 1989 و 1992 و 1996 و 1999 و 2003 و 2006 و 2008 و 2011 و 2016. ما هي أنظمة معالجة قواعد البيانات العلائقية RDBMS؟ أنظمة معالجة قواعد البيانات العلائقية (Relational Database Management System) هي برامج تُستخدَم لمعالجة وإدارة قواعد البيانات العلائقية (Relational Database)، وهي قواعد تخزِّن البيانات وفق بنية مهيكلة في جداول تتألف من صفوف وأعمدة لتسهيل الوصول إلى القيم المخزنة. لكل جدول مفتاح فريد يميز كل صف من الجدول. وتُسمى "علائقية" (relational) لأنّ القيم المُخزّنة في الجداول متعلقة ببعضها بعضًا. تجري أنظمة قواعد البيانات العديد من المهام، مثل: تأمين البيانات إنشاء النسخ الاحتياطية إدارة ومعالجة كميات ضخمة من البيانات تصدير البيانات أو استيرادها العمل على عدة جداول تزامنيا هناك العديد من أنظمة معالجة قواعد البيانات، من أشهرها: Oracle و MySQL و Microsoft SQL Server و DB2. ورغم أنّ أكثرها تستخدم SQL، إلا أنّ لكل منها بعض الإضافات والصياغات الخاصة بها التي لا تُستخدم في الأنظمة الأخرى، بيْد أنّها تدعم جميعا الأوامر الأساسية للغة (SELECT و UPDATE و DELETE و INSERT و WHERE). لماذا عليك تعلم SQL؟ إن كنت تتساءل عما إذا كانت SQL تستحق أن تتعلمها، فالنقاط التالية ستوضح لك بعض مزايا هذه اللغة: سهولة التعلم: لغة SQL سهلة موازنة مع بقية لغات البرمجة، ذلك أنّها مخصصة لغرض واحد، وهو معالجة البيانات معالجة البيانات الكبيرة: نحن نعيش في عصر الثورة الرقمية، ومن نتائج ذلك أنّ البيانات أصبحت متاحة بكميات ضخمة. ففي كل يوم تُنتج عدة تيرابايت من البيانات. بالطبع، يمكنك استخدام جداول البيانات العادية، مثل EXCEL وجداول جوجل، ولكنها مخصّصة لمعالجة كمية صغيرة أو متوسطة من البيانات. وهنا يأتي دور SQL، لأنها مصممة لمعالجة كميات ضخمة من البيانات بأداء وكفاءة عالية. تطوير الويب: SQL هي إحدى المهارات الضرورية لكل مبرمجي الواجهة الخلفية للخادم، لأنها تُستخدم لمعالجة واسترجاع البيانات المُخزّنة في الخادم، بما فيها بيانات المستخدمين. السرعة: لا تفعل SQL إلا شيئا واحدا فقط، وهو معالجة البيانات وإدارتها، وهي ممتازة فيما تفعله. فهي مُحسَّنة للدخول إلى البيانات بسرعة فائقة، ما يجعلها مثالية لتطبيقات الوقت الحقيقي. فرص العمل: هناك طلب كبير على مبرمجي SQL في القطاع الخاص، ويُتوقع أن يزداد هذا الطلب في السنوات القادمة، خصوصا في العالم العربي الذي يعرف ازدهارا سريعا للاقتصاد الرقمي في السنوات الأخيرة. الشهرة: في استطلاع stackoverflow لسنة 2019، حلت SQL في المرتبة الثالثة في قائمة أكثر تقنيات البرمجة استخداما من قبل المبرمجين على مستوى العالم. بعد جافاسكربت و HTML و CSS. إذ يستخدمها أكثر من نصف المبرمجين. هذا أمر طبيعي، لأنّ SQL هي إحدى أركان تقنيات الويب، ولا يمكن تطوير أي موقع ويب أو تطبيق بدون معرفة ولو بسيطة بها. مفتوحة المصدر: SQL مفتوحة المصدر، كما أنّ لديها مجتمعا كبيرا، إن اعترضتك مشكلة أثناء تعلم SQL، فيمكن أن تطرح سؤالك على stackoverflow أو في قسم الأسئلة في أكاديمية حسوب. المصدر كيف أتعلم SQL؟ قد تسأل: كيف أتعلم SQL؟ شبكة الإنترنت غنية بالكتب والمراجع والمقالات عن SQL باللغة الإنجليزية، للأسف، من الصعب أن تجد محتوى عربيا عالي الجودة لتعلم SQL، أو أيّ مجال تقني آخر. لمعالجة هذا الأمر وإثراء المكتبة العربية، أطلقت حسوب مشروعا لترجمة بعض أفضل الكتب التقنية في مجال البرمجة. ونظرا لأهمية SQL للمبرمجين، وحتى لغير المبرمجين من العاملين في القطاعات التقنية، كالصناعة والمحاسبة والصيرفة وتحليل البيانات، أو للمهتمين بقواعد البيانات عموما، قررنا ترجمة أحد أفضل الكتب الإنجليزية عن SQL، وهو كتاب SQL Notes For Professionals. لقد نشرنا سلسلة تضمّ كافة فصول الكتاب، وهي معروضة في القسم التالي. يمكنك أيضًا تنزيل الكتاب جملة واحدة على هيئة كتاب إلكتروني اطلقنا عليه، ملاحظات للعاملين بلغة SQL. @media screen and (min-width: 650px) { .response_image { width: 33%; display: inline-block; vertical-align: top; margin-top: 0px; } .response_descrip { width: 64%; display: inline-block; margin-right: 10px; vertical-align: top; margin-top: 0px; } } سلسلة "SQL للمحترفين" تغطي هذه السلسلة -المبنية على كتاب «ملاحظات للعاملين بلغة SQL»- كافَّة المفاهيم الأساسية للغة SQL، مثل العمليات الأولية، كإدراج البيانات وحذفها واستخلاصها وتحديثها، وأنواع البيانات، وتصميم الجداول وتنفيذ الاستعلامات، إضافة إلى مفاهيم متقدمة، مثل المعارض والدوال، وإدارة المستخدمين، وكيفية تأمين الشيفرة وغيرها من المواضيع. كما أنّها غنية بالأمثلة التطبيقية التي تشرح كل هذه المواضيع لترسيخ فهمها. هذه السلسلة ليست مثل غيرها من السلاسل والشروحات التي تشرح لغة SQL من البداية شرحًا مُبسَّطًا ومتسلسلًا وإنَّما تعتمد على مبدأ خير الكلام ما قل ودل في الشرح وترك الشيفرة تشرح نفسها بنفسها، فتحوي على كم كبير من الشيفرات بالموازنة مع الشرح. وُجِّهت هذه السلسلة لمن لديه معرفة بسيطة بلغة SQL، لذا يفضَّل أن تمتلك معرفة بلغة SQL لتستفيد أكبر استفادة منها وتقرأ الشيفرات وتفهمها وتتعلَّم منها. في هذه الحالة، ستساهم هذه السلسلة في رفع مستواك في لغة SQL وستُملِّكك مهارات متقدمة في استعمال لغة SQL بالإضافة إلى بعض الخدع والالتفافات المتقدمة أيضًا. قد تسأل نفسك، هل ينفع أن اقرأ السلسلة دون معرفة مسبقة بلغة SQL؟ سأقول، نعم، ولكن يجب أن تتحلى بالصبر في قراءة الشيفرة وتحليلها وفهمها والبحث عن أي موضوع لم تفهمه والسؤال عن شرح لأي شيفرة غامضة، إذ لن تجد كلامًا وشرحًا كبيرًا للمواضع التي تتحدث عنه السلسلة، كما أن تسلسل المواضيع فيها لا تراعي عدم امتلاك القارئ معرفة بلغة SQL، إذ رُتِّبت ترتيبًا عشوائيًا في العمل الأصلي. بذكر ترتيب عناوين ومواضيع السلسلة، حاولت ترتيب عناوينها بأنسب شكل لتكون متدرِّجة في الصعوبة وحاولت جمع المواضيع المتشابهة في فصل واحد رغم تشرذمها وتفرقها في العمل الأصلي فلا تشبه النسخة العربية المترجمة النسخة الأجنبية مطلقًا، إذ حاولت أن تكون أفضل منها وأرجو أن نكون قد حققنا ذلك. فإن كنت على معرفة بأحد المواضيع، فلا تتخطاها بل اقرأها، فقد تمر معك إشارة لموضوع متقدم أو ملاحظة مهمة لم تكن تعرفها (تذكر أنَّ اسم الكتاب العربي ملاحظات متقدمة للعاملية بلغة SQL ;-) ). يمكنك أيضًا أن تقرأ السلسلة من أي قسم تريد فهي من الأساس غير مُرتَّبة ترتيبًا متدرجًا ومتسلسلًا كما أشرت إلى ذلك، رغم محاولتي في ترتيبها لك أنسب ترتيب من البداية للنهاية؛ أرجو لك قراءة ممتعة! 1. مدخل إلى SQL هذه المقالة هي مدخل عام إلى لغة الاستعلامات SQL، وفيها توطئة لبعض المفاهيم الأساسية لهذه اللغة، مثل المعرّفات و أنواع البيانات، كالأعداد والحروف والقيم المالية، إضافة إلى مجموعة من الأمثلة العملية على بعض الجداول وقواعد البيانات. 2. جلب الاستعلامات عبر SELECT في SQL تستعرض هذه المقالة كيفية استخدَام العبارة SELECT في استعلامات SQL لاختيار واستخلاص النتائج من قاعدة البيانات، تشمل هذه الفقرة العديد من تقنيات الاختيار، مثل حرف البدل والاختيار وفق كُنى الأعمدة، وتحديد عدد السجلات المُختارة والاختيار الشرطي، والاختيار باستخدام الدوال التجميعية، واختيار صفوف من عدة جداول. 3. التجميع والترتيب في SQL تتحدث هذه المقالة عن كيفية استخدام العبارتين GROUP BY و ORDER BY لتجميع نتائج الاستعلامات في SQL وترتيبها. إضافة إلى التقنيات المُستخدمة لتصنيف النتائج وفق شروط معينة، وعدّ الصفوف في الجدول، والتنقيب عن البيانات أو ترتيبها بحسب عدة أعمدة. 4. تنفيذ تعليمات شرطية عبر CASE في SQL تستعرض هذه المقالة العبارة CASE، والتي تُستخدم لكتابة الشيفرات الشرطية (if-then)، وعد الصفوف التي تحقق شرطا معينا، إضافة إلى كيفية استخدام CASE لتحديث البيانات، أو ترتيبها تصاعديا أو تنازليا. 5. البحث والتنقيب والترشيح في SQL تستعرض هذه المقالة بعض معاملات SQL المتخصصة في البحث والتنقيب وترشيح النتائج، مثل المعامل LIKE، الذي يبحث عن التطابقات مع نمط نصي معين، و WHERE و HAVING، اللتان تُستخدمان لترشيح النتائج وفق شروط معينة، إضافة إلى بعض تقنيات التحكم في النتائج المُعادة، واستعراض بعض البيانات الوصفية المتعلقة بالاستعلامات. 6. الدمج بين الجداول في SQL سنستعرض في هذه المقالة كيفية استخدام العبارة JOIN، وأنواعها، وكيفية إجراء الدمج العودي والدمج في الاستعلامات الفرعية، وذلك كله من أجل إجراء عملية الدمج بين الجداول والحصول على النتائج المرجوة. 7. تحديث الجداول في SQL تستعرض هذه المقالة كيفية استخدام العبارات UPDATE و CREATE لتحديث وإنشاء قواعد البيانات والجداول، إضافة إلى كيفية إنشاء دوال جديدة. 8. معالجة الأخطاء والتعديل على قواعد البيانات في SQL تستعرض هذه المقالة كيفية معالجة الأخطاء باستخدام العبارة TRY / CATCH، وكيفية حساب الاتحاد (UNION) وبعض العمليات الأخرى التي تمكّن من تعديل قواعد البيانات، وإدراج بيانات جديدة في الجداول 9. حذف الجداول وقواعد البيانات في SQL تتحدّث هذه المقالة عن كيفية حذف الجداول وقواعد البيانات (DROP و DELETE)، واقتطاع الجداول (TRUNCATE TABLE)، وكيفية استخدام الحذف المتفشي أو المتسلسل (Cascading Delete) في SQL. 10. مواضيع متقدمة في SQL تستعرض هذه المقالة عددًا من المواضيع المتقدمة في SQL، مثل إدارة صلاحيات المستخدمين، واستخدام ملفات XML في الاستعلامات، والمفاتيح الرئيسية وأرقام الصفوف، إضافة إلى مفهوم الفهارس، وكيفية إنشائها أو حذفها وتعطيلها. 11. دوال التعامل مع البيانات في SQL تستعرض هذه المقالة بعض أنواع الدوال، مثل الدوال التجميعية (Aggregate Functions) التي تُطبَّق على الصفوف، والدوال التحليلية (Analytic Functions) والدوال العددية ودوال النافذة (window function). 12. دوال التعامل مع النصوص في SQL تستعرض هذه المقالة مفهوم الدوال النصية String Functions، وهي دوال تُنفَّذ على قيم نصية، وتعيد إمّا قيمًا عددية أو قيمًا نصية. مثلًا، يمكن استخدام الدوال النصية لدمج البيانات، أو استخراج أجزاء من السلاسل النصية، أو موازنة السلاسل النصية أو تحويلها من الأحرف الكبيرة إلى الصغيرة، أو العكس. 13. التعبيرات الجدولية الشائعة Common Table Expressions تستعرض هذه المقالة مفهوم التعبيرات الجدولية (Common Table Expressions) في SQL، والتي يمكن استخدامها مع الاستعلامات المؤقتة والعوديّة لتوليد سلاسل القيم وتسلق الأشجار (trees). 14. مواضيع متفرقة في SQL تستعرض هذه المقالة مجموعة من المواضيع الإضافية في SQL، مثل المعارض (Views)، وكيفية كتابة التعليقات، وكيفية التعامل مع المفاتيح الخارجية (Foreign Keys) وإنشاء تسلسلات العناصر. 15. الاستعلامات الفرعية والإجراءات في SQL تستعرض هذه المقالة بعض المواضيع المتقدمة عن تنفيذ الشيفرات في SQL، مثل الاستعلامات الفرعية (Subqueries)، وكتل التنفيذ، والإجراءات المُخزّنة، والزنادات (triggers)، وكيفية إنشاء المُعامَلات (transactions) وتنفيذها. 16. تصميم الجداول وترتيب تنفيذ الاستعلامات ومعلومات المخطط في SQL تستعرض هذه المقالة عددا من مواضيع SQL المتفرقة، مثل كيفية تصميم جداول قواعد البيانات، واستخدام المرادفات، وكيفية استخلاص المعلومات المتعلقة بقاعدة البيانات عبر معلومات المخطط، والترتيب الذي تُنفّذ وفقه عبارات واستعلامات SQL التي من المفيد تعلمها والإلمام بها. 17. تنظيم وتأمين شيفرات SQL تتحدث هذه المقالة عن أفضل الممارسات المُتعارف عليها بين المبرمجين، والتي تساعد على كتابة شيفرات SQL نظيفة وعالية المقروئية، وكذلك تأمين الشيفرات عبر التحوّط من أحد أشهر أنواع هجمات SQL، وهو حقن شيفرات SQL (SQL Injection). دروس ومقالات إضافية هذه بعض المقالات الإضافية التي يمكن أن تساعدك على ترسيخ فهمك لبعض مفاهيم SQL وقواعد البيانات. مقدمة عن قواعد البيانات هذا هو المقال الأول من سلسلة دروس عن لغة الاستعلام البنائية Structured Query language، ويشرح مفهوم قواعد البيانات، وأنظمة إدارة قواعد البيانات، والجداول، وخصائص قواعد البيانات العلاقية. أساسيّات لغة SQL يعطي هذا المقال لمحة عامة عن لغة الاستعلامات SQL، وعن دورها وعلاقتها بقاعدة البيانات، مع شرح أساسيات وصياغة قواعد البيانات والجداول. البيانات في SQL: أنواعها والقيود عليها يتطرق هذا المقال لأحد المفاهيم الأساسية في قواعد البيانات وفي لغة الاستعلامات SQL، وهو مفهوم القيود، إذ يعرض هذا المفهوم مع أمثلة عملية لتوضيحه. إضافة إلى عرض مفصَّل لمختلف أنواع البيانات المُستخدمة في قواعد البيانات. التعامل مع البيانات (الإدخال، الحذف والتعديل) في SQL يشرح هذا المقال موضوع لغة التعامل مع البيانات Data Manipulation Language، سوف تملك في نهاية هذا المقال المعرفة اللازمة لإضافة سجلات بيانات إلى الجداول، وتعديلها، وحذفها باستخدام عبارات SQL الأساسية، مثل: UPDATE وINSERT وDELETE. الاستعلام عن البيانات في SQL هذا المقال تتمة للمقال السابق، ستتعلم فيه إحدى أشهر عبارات لغة الاستعلام البنائية، وهي Select، يتكلم المقال عن كيفية صياغة هذه العبارة، وأشكالها، وكيفية ترشيح البيانات واختيار الأعمدة. الفهارس Indexes في SQL يتناول هذا المقال موضوع الفهارس Indexes في SQL، وما تمثله في قاعدة البيانات، وما هي الفائدة منها، وكيفية استخدامها في شيفرات SQL. العلاقات بين الجداول في SQL SQL مُتخصَّصة أساسًا في قواعد البيانات العلائقية، لهذا فإنّ فهم موضوع العلاقات بين الجداول ضروري لكل مبرمج يريد احتراف هذه اللغة واستنفاذ إمكانياتها. ستتعلم في هذا المقال مفهوم العلاقات بين جداول قاعدة البيانات، وأنواع هذه العلاقات، وكيف تُمثَّل وتطبق بين الجداول. تعلم لغة الاستعلام SQL بالأمثلة العملية أفضل طريقة لتعلم أيّ لغة برمجة هي بتطبيق المعارف على أمثلة عملية. يشرح هذا الدرس المُصوّر أساسيات لغة الاستعلامات SQL عبر أمثلة عملية، وذلك باستخدام لوحة التحكم phpMyAdmin. خاتمة تُضاف مزيد من المقالات والدروس إلى الأكاديمية حول SQL وقواعد البيانات باستمرار، لذلك تابع مستجدات أكاديمية حسوب. وإن أشكل عليك شيء فيمكنك أن تسأل عنه في قسم الأسئلة والأجوبة الخاص بالأكاديمية. يمكنك أيضا الاشتراك في قناة حسوب على اليوتوب، هذه القناة تحتوي دروسًا قصيرةً عن العديد من مواضيع البرمجة. تابع أيضًا قسم الكتب والملفات للاطلاع على أحد الكتب التي ننشرها. إن كنت مهتما بتعلم لغات برمجة أخرى، فيمكنك زيارة قسم البرمجة في الأكاديمية، أيضًا لا تنس زيارة موسوعة حسوب، التي تضم توثيقات الكثير من لغات البرمجة، بما في ذلك توثيق SQL. وفّقك الله تعالى.1 نقطة
-
Write a Java class Author with following features: • Instance variables : o firstName for the author’s first name of type String. o lastName for the author’s last name of type String. • Constructor: o public Author (String firstName, String lastName): A constructor with parameters, it creates the Author object by setting the two fields to the passed values. • Instance methods: o public void setFirstName (String firstName): Used to set the first name of author. o public void setLastName (String lastName): Used to set the last name of author. o public double getFirstName(): This method returns the first name of the author. o public double getLastName(): This method returns the last name of the author. o public String toString(): This method printed out author’s name to the screen1 نقطة
-
1 نقطة
-
سيتم التواصل معك من مركز الدعم في أقرب وقت بإذن الله لا داعي للقلق. الرسالة التي وصلتك قد تكون رسالة مرسلة أوتوماتيكيًا حتى يتمكن الفريق من الرد عليك. يمكنك أن تقوم بفتح تذكرة بهذه المشكلة و سيقوم مركز الدعم بحل مشكلتك في أقرب وقت بإذن الله. شكرًا لك.1 نقطة
-
أهلاً بك . دورة علم الحاسوب هي دورة تأسيسية ستتمكن من خلاها من التعرف على عالم البرمجة و الحاسوب بشكل عام ، و يمكنك الإنطلاق بعدها و التعمق في المجال الذي تحب (واجهات مستخدم ، php .. الخ ) . كما يمكنك تنفيذ مشاريع برمجية صغيرة بعد أن تنهيها بنجاح . و لتنفيذ مشاريع برمجية - احترافيه - سوف تحتاج الى تعلم اشياء إضافية الى دورة علوم الحاسوب شكراً لك1 نقطة
-
السلام عليكم, الأرجح والله أعلم, بحسب الوسط و الامكانيات المادية, ان كنت تضمن وسطاً ملائما (غرفة.. + مكتب وكرسي ملائم + انترنت + حاسوب مناسب), و التكاليف الضرورية لسنة ونصف الى ثلاث سنوات لتصبح محترفا مبتداً, (وقد تطول الى عدة سنوات, بحسب المستوى الذي ترغب الوصول اليه), وقد تحتاج لشراء بعض اللوازم الاكترونية أيضاً .. حينئذ لا حرج لتتفرغ فيما تجد قُنيتك, أي في الامن المعلوماتي, والدروس والدورات والبرامج التعليمية للحصول على الشواهد العالمية متوفرة بكثرة. أقول هذا لأن ايجاد العمل قد يكون صعبا بعض الاحيان بشهادة واحدة فلا بأس في اتمام شهادة اللغة العربية, على الاقل الشهادة الاولى ثم تترك, لكي لا يضيع سلكك الدراسي, وأن تضع برنامجا تواضب عليه, تجمع بين الجامعة وأمن المعلوميات مثلاً: ساعة في اليوم أو يوم في الاسبوع أو أكثر, شرط أن تضمن شهادتك في الجامعة. سنة أو سنتين اظافيتين تصبرهما من حياتك للحصول على شهادة جامعية شيء ذهبي, قد تكون لك سبباً لفرص واَفاق أوسع + كفاءة ترفع مهاراتك الذهنية. الحصول على شهادة أدبية لن تمنعك من مزاولة ما تفضله, بل قد تساعدك في بعض الاحيان التي لن تتم الا بها. بالتوفيق!1 نقطة
-
أهلاً دانا . نظام الأندرويد لا يدعم أي تطبيق يقوم بالتعديل على ملفات النظام او يقوم بتأثير على ملفات تطبيق آخر. ولكن يمكن عمل root لأي جهاز اندرويد لتصبح قادر على التعديل على التطبيقات و الملفات الموجودة في النظام . و هنا مقالة تتحدث عن تحويل نظام الاندرويد الى root شكراً لك1 نقطة
-
مرحبًا دانا.. طرق الربح عن طريق تطبيقات الهواتف الذكية كثيرة و لكن أبسطها هي عن طريق الإعلانات أو بأن تجعلي تطبيقك متاح مجاني و لكن بعض المزايا المتقدمة تتطلب ترقية إلى عضوية مدفوعة. هذه مقالة باللغة العربية تطرح 10 طرق للربح من خلال تطبيقات الهواتف الذكية.1 نقطة
-
مرحباً @Alaa Emam يُمكنك عمل البرنامج بلغة جافا بالشكل التالي فهو عبارة عن إنشاء كلاس يتضمن خاصيتين (properties) من النوع النصي ( string ) و 5 توابع (methods) أي getters and setters و إعادة تعريف للتابع toString : class Author { // Instance variables private String firstName, lastName; // Constructor public Author(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } /* Instance methods */ public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return this.firstName + " " + this.lastName; } } ويُمكنك إستخدام الكلاس Author في الميثود main بالشكل التالي: public class Main { public static void main(String[] args) { // create instance Author author = new Author("Alaa", "Emam"); System.out.println(author); // print author => call toString method } } بإمكانك تجربة المثال من خلال الرابط التالي: إضغط هنا بالتوفيق1 نقطة
-
مرحبًا @Alaa Emam, يمكن عمل المطلوب بهذه الشيفرة : public class Author { String firstName ; //متغير الاسم الاول String lastName ; // متغير الاسم الاخير public Author(String first_name,String last_name) { // Constructor firstName = first_name; // تعين قيمة الاسم الاول lastName = last_name;// تعين قيمة الاسم الاخير } //Method تعين الاسم الاول public void setFirstName ( String first_name ) { firstName = first_name; } // Method تعين الاسم الاخير public void setLastName ( String last_name ) { lastName = last_name; } // Method جلب الاسم الاول public String getFirstName( ) { return firstName; } // Method جلب الاسم الاخير public String getLastName( ) { return lastName; } //Method طباعىة الاسم كاملا public String toString(){ System.out.println(firstName + " " + lastName); return firstName + " " + lastName; } public static void main(String []args){ Author myObj = new Author("Adam","Ali"); System.out.println(myObj.getFirstName()); } }1 نقطة
-
بالفعل السبب هو أن الelement المطلوب موجود بداخل iframe، والذي بدوره موجود بداخل iframe آخر، والذي بدوره بداخل iframe آخر. لذلك يجب عمل switching ثلاث مرات. يمكن عمل التالي كالآتي: #اختصار الاسم الطويل للفانكشن q = driver.find_elements_by_css_selector #إيجاد أول فريم وعمل سويتش إليه frames = q('iframe')[1] a = driver.switch_to_frame(q('iframe')[1]) inside_frame = q('*') #إيجاالفريم بداخل الفريم وعمل سويتش إليه inception_frame = inside_frame[-2] driver.switch_to_frame(inception_frame) #إيجاالفريم بداخل الفريم بداخل الفريم وعمل سويتش إليه double_inception_frame = q("*")[-2] driver.switch_to_frame(double_inception_frame) بعد ذلك لإضافة التاريخ إلى الinput: from selenium.webdriver.common.keys import Keys #الآن يمكننا الوصول للعنصر لأننا بداخل الفريم الحاوي له inp = q('#stop-datetime')[0] our_time = '11/23/2021 11:14 AM' inp.send_keys('11') inp.send_keys('23') inp.send_keys('2021') inp.send_keys(Keys.TAB) inp.send_keys('11') inp.send_keys('14') inp.send_keys('AM') بعد ذلك إن أردت العودة إلى الصفحة خارج جميع الframes: driver.switch_to_default_content() بالتوفيق.1 نقطة
-
اكيد عزيزي انا مبرمج من 9 سنوات كل الدورات اللي دخلتها مجانية، لكن في الوقت الحالي انتشرت الدورات المدفوعة وسار البعض يظن ان الدورات المدفوعة افضل! انا ابداً ما اايد فكرة الدورات المدفوعة للتعلم الاساسي، لان الدورات المدفوعة تعطيك اتجاه واحد فقط أو طريقة تعلم واحدة اما في الانترنت واليوتيوب فعندك القدرة انك تتعرف على اكثر من شيء واكثر من طريقة وتختار الاشخاص اللي يناسبوك! ايش حاب تبدء بلغة برمجة؟1 نقطة