نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

الاستخدام الخطأ لمبادئ البرمجة كائنية التوجه (Object-Orientation Abusers)

من مشاكل الشيفرات أيضًا التطبيقُ الخطأ وغير المكتمل لمبادئ البرمجة كائنية التوجّه (Object-Oriented)، مثل: استخدام الأصناف البديلة (alternative) ذات الواجهات (interfaces) المختلفة المشكلة: التطابق بالمهام ما بين صنفين ولكن بأسماءٍ مختلفةٍ لتوابعهما. الحل: حذف أحد الصنفين بعد تنفيذ إحدى الحلول الآتية: إعادة تسمية التوابع (methods) لتصبح متطابقةً بكافّة الأصناف البديلة، أو توحيد التوقيع (signature) وتعريف الاستخدام ما بين التوابع (إمّا بنقل التابع أو إضافة المعاملات أو دمج التوابع عبر المعاملات)، أو استخراج صنفٍ أعلى وجعلهما صنفين فرعيين له (إن كان التطابق جزئيًا). الوراثة الفائضة (refused bequest) ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

نقل الميزات ما بين الكائنات (Moving Features between Objects)

تساعد عملية إعادة التصميم (refactoring) في توزيع المهام بشكل مثاليّ على الأصناف (classes) المختلفة في الشيفرة، وتضمن تقنيات الحل هذه طريقةً آمنةً لنقل المهام (functionality) ما بين الأصناف، وإنشاء أصناف جديدة وحماية تفاصيل عملية التنفيذ (implementation) من الوصول العام (public access)، وهذه التقنيات تشمل: نقل التابع (Move Method) المشكلة: استخدام التابع (method) في صنفٍ (class) ما أكثر من استخدامه في صنفه الأساسيّ. الحل: إنشاء تابعٍ جديدٍ في الصنف الأكثر استخدامًا لذلك التابع ونقل شيفرته إلى التابع الجديد، ثم تحويل الشيفرة ...

تبديل قيم البيانات إلى كائنات (Replace Data Values with Objects)

المشكلة وجود حقلٍ (field) مٌخصَّص للبيانات في صنفٍ (class) ما (أو في عددٍ من الأصناف)، ولهذا الحقل بياناته وسلوكه (behaviour) المرتبط به. الحل إنشاء صنفٍ جديدٍ ليُوضَع فيه الحقل (field) بالإضافة إلى سلوكه المرتبط به، وتخزين كائنٍ (object) من هذا الصنف الجديد في الصنف الأصليّ للحقل. مثال قبل إعادة التصميم يحتوي الصنف Order على الحقل customer الذي يحتوي بيانات نصيّة (من النوع String) كما هو واضح في مخطط الأصناف الآتي: الصنف Order يحتوي على الحقل customer الذي يحتوي بيانات نصيّة. ...

تقديم الكائن الفارغ (Introduce Null Object)

المشكلة تؤدي إعادة بعض التوابع للقيمة null بدلًا من الكائنات الحقيقية إلى امتلاء الشيفرة البرمجية بالعديد من نقاط التحقق من القيمة null. الحل إعادة كائن فارغ يظهر السلوك الافتراضي بدلًا من null. مثال قبل إعادة التصميم وجودة نقطة تحقق شرطية من الكائن customer لاتخاذ إجراء مناسب إن كانت قيمته null: في لغة Java: if (customer == null) { plan = BillingPlan.basic(); } else { plan = customer.getPlan(); } في لغة C#‎: if (customer == null) { plan = BillingPlan.Basic(); } else { ...

الحفاظ على الكائن كاملًا (Preserve Whole Object)

المشكلة جلب عدة قيم من أحد الكائنات، ثم تمريرها كمعاملات إلى أحد التوابع. الحل حاول تمرير الكائن بالكامل بدلًا من ذلك. مثال قبل إعادة التصميم جلب قيمة درجة الحرارة المنخفضة low والمرتفعة high من الكائن daysTempRange ثم تمريرهما إلى التابع ()withinTange: في لغة Java: int low = daysTempRange.getLow(); int high = daysTempRange.getHigh(); boolean withinPlan = plan.withinRange(low, high); في لغة C#‎: int low = daysTempRange.GetLow(); int high = daysTempRange.GetHigh(); bool withinPlan = plan.WithinRange(low, high); في لغة PHP: $low = $daysTempRange->getLow(); $high = $daysTempRange->getHigh(); $withinPlan = $plan->withinRange($low, $high); في لغة Python: ...

تعريف كائن المُعامل (Introduce Parameter Object)

المشكلة تحتوي التوابع على نفس المجموعة المتكررة من المعاملات. الحل استبدال هذه المعاملات بكائنٍ واحد. مثال قبل إعادة التصميم تمرير نفس مجموعة المعاملات إلى توابع الصنف Customer: تحتوي التوابع على نفس المجموعة المتكررة من المعاملات. بعد إعادة التصميم تبديل كائن واحد بتلك المعاملات وتمريره إلى توابع الصنف Customer التي تشترك بنفس مجموعة المعاملات: استبدال هذه المعاملات بكائنٍ واحد. لم إعادة التصميم؟ غالبًا ما تُصادَف مجموعات متطابقة من المعاملات داخل العديد من التوابع. الأمر الذي يؤدي إلى تكرار الشيفرة البرمجية للمعاملات ...

الكائن Object في JavaScript

الدالة البانية Object تُنشِئ كائنًا. البنية العامة // الشكل المختصر لتهيئة الكائن { [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] } // استدعاء الدالة البانية new Object([value]) nameValuePairN أزواج من الأسماء (السلاسل النصية) والقيم (أيّ نوع من القيم) التي يُفصل فيها بين الاسم والقيمة بنقطتين رأسيتين :. value أيّة قيمة في JavaScript. الوصف الدالة البانية Object تُغلِّف (wrap) القيمة المعطية في كائن، وإذا كانت القيمة المعطية null أو undefined، فستُنشِئ وتُعيد كائنًا فارغًا، وفيما عدا ذلك فستُنشِئ وتُعيد كائنًا من النوع المناسب للقيمة المعطية، ...

تقنيات إعادة التصميم (Refactoring Techniques)

إنشاء التوابع تستهدف إعادة التصميم بشكل رئيسيٍّ إنشاء التوابع الصحيحة المناسبة، إذ تكون التوابع الطويلة سببًا للمشاكل في كثيرٍ من الحالات، وتجعل شيفرات بعض التوابع منطق التنفيذ (execution logic) غامضًا ويصبح التابع بهذا عصيَّ الفهم من جهةٍ وصعب التغييرٍ من جهة ثانية. يشمل هذا القسم من الحلول كلَّ ما يتعلق بالتوابع وإزالة التكرار (duplicates) في الشيفرة ليسمح بإجراء التطويرات المستقبليّة، وهذه التقنيات هي: استخراج التوابع (Extract Methods): والتي تتمثل بوجود أجزاء من الشيفرة يُمكن عزلها وتجميعها سويةً. دمج التوابع (Inline ...

الكائنات في PHP

تهيئة الكائن لإنشاء كائن جديد، استخدم التعبير البرمجي new لتهيئة كائن من صنفٍ ما (class): <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> راجع فصل الأصناف والكائنات (Classes and Objects) للمزيد من المعلومات. التحويل إلى كائن إذا حوّلنا كائنًا إلى كائنٍ آخر فلن يُعدَّل فيه شيء، أما إذا حولنا قيمةً من أي نوعٍ آخر إلى كائن، فستُنشَأ نسخةً جديدةً من ...

الكائنات في PHP

تهيئة الكائن لإنشاء كائن جديد، استخدم التعبير البرمجي new لتهيئة كائن من صنفٍ ما (class): <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?> راجع فصل الأصناف والكائنات (Classes and Objects) للمزيد من المعلومات. التحويل إلى كائن إذا حوّلنا كائنًا إلى كائنٍ آخر فلن يُعدَّل فيه شيء، أما إذا حولنا قيمةً من أي نوعٍ آخر إلى كائن، فستُنشَأ نسخةً جديدةً من ...

الكائن Process

يكون الكائن process عامًا (global) والذي يزود معلومات عن عملية Node.js الحالية ورقابةً عليها، كونه كائنًا عامًا فهو متوافر دومًا لتطبيقات Node.js دون استخدام ()require. أحداث Process الكائن process هو نسخة من EventEmitter. الحدث 'beforeExit' أُضيف في الإصدار: 0.11.12. يُطلَق الحدث 'beforeExit' عندما تفرغ Node.js من حلقة الأحداث (event loop) ولا يوجد عمل إضافي لجدولته. بشكل طبيعي، عملية Node.js سوف تنتهي عندما لا يكون هناك عمل مجدولٌ، لكن المُنصِت المسجِّل لحدث 'beforeExit' يمكن أن يعمل استدعاءات غير متزامنة، وبذلك يسبب ...

تبديل التابع إلى كائن التابع (Replace Method with Method Object)

المشكلة وجود تابعٍ طويلٍ بالكثير من المتغيِّرات المحليّة (local variables) المتداخلة والتي تحول دون تطبيق تقنية الحل باستخراج التابع (extract method). الحل نقل التابع إلى صنفٍ (class) مستقلٍ بحيث تصبح متغيِّراته المحليّة حقولًا (fields) لهذا الصنف، وتقسيم التابع بعد ذلك إلى عدّة توابع أصغر في الصنف ذاته. مثال قبل إعادة التصميم نلاحظ وجود العديد من المتغيِّرات المحليّة في التابع price()‎ بالإضافة إلى عملياتٍ أخرى قد تكون طويلةً ومعقَّدة: في لغة Java: class Order { //... public double price() ...

التسلط على الكائنات الأخرى (Feature Envy)

توصيف المشكلة استخدام بعضُ التوابع (methods) بياناتِ الكائنات (objects) الأخرى أكثر ممّا تستخدم بياناتِها ذاتَها. أسبابها تحدث هذه المشكلة عقب نقل الحقول (fields) إلى أصناف البيانات (data class)، إذ من الأفضل نقلُ التوابع المستخدِمة لتلك الحقول لذلك الصنف أيضًا. وما الحل؟ لنضع بالحسبان القاعدة الآتية: يجب أن تبقى الأجزاء التي تتغيَّر بآنٍ واحدٍ في المكان ذاته معًاولتحقيق ذلك: نقلُ التوابع (move methods) إلى المكان الأنسب في الشيفرة. عندما يستخدِم جزءٌ فقط من التابع بياناتِ كائنٍ (object) آخر، فالأفضل استخراجُ تابعٍ ...

خطوات إعادة التصميم (Refactoring)

تجري عملية إعادة التصميم (refactoring) عبر عدّة خطواتٍ تُحدِث تغييرًا بسيطًا تدريجيًّا يجعل الشيفرة (مع كلِّ تغييرٍ) أفضل بقليلٍ، ولكنها لا توثر على أداء وفعاليّة البرنامج وتحافظ على استمرار عمله بشكلٍ سليمٍ، وتتلخص إعادة التصميم بالخطوات الآتية: الحصول على شيفرةٍ نظيفة (clean code) إن لم تصبح الشيفرة أنظف من بعد إعادة التصميم فهذا هدرٌ للوقت، ولكن ما السبب؟ يحدث كثيرًا أن تحيد عن سياق إعادة التصميم بتغييراتٍ تدريجيّة صغيرةٍ لتتجه نحو إجراء تغييرٍ كبيرٍ واحدٍ! وهذا خطأ ومن السهل الوقوع ...

الكائن المؤجل (Deferred Object)

قُدِّم الكائن المؤجل في الإصدار jQuery 1.5، وهو كائن أداة قابل للتسلسل ينشأ عن طريق استدعاء التابع jQuery.Deferred()‎‎‎. ويمكنه تسجيل عدة دوال رد اتصال في صفوف رد الاتصال، واستدعاء هذه الصفوف، ونقل حالة النجاح أو الفشل لأي دالة متزامنة أو غير متزامنة. يكون الكائن المؤجل قابلاً للتسلسل، مماثلاً للطريقة التي يكون فيها كائن jQuery قابلاً للتسلسل، ولكن له توابعه الخاصة. بعد إنشاء كائن مؤجل، يمكنك استخدام أي من التوابع المذكورة أدناه إما بالتسلسل مباشرة من إنشاء الكائن، أو حفظ الكائن ...

وراثة الكائنات في PHP

وراثة الكائنات من المبادئ المعروفة في البرمجة كائنية التوجه وتستخدمه PHP في نموذج الكائنات الخاصّ بها. يؤثّر هذا المبدأ على العلاقة التي تربط بين الأصناف والكائنات. فعلى سبيل المثال، عند توسيع صنف معين، يرث الصنف الفرعي جميع التوابع من نوع public و protected من الصنف الأب، وإن لم يتجاوز (override،أي يعيد تعريف) الصنف الابن هذه التوابع فإنّها ستحافظ على وظيفتها الأصلية. يساعد مبدأ وراثة الكائنات في تعريف الوظائف التي تؤديها التوابع وجعلها أكثر تجريدًا، ويتيح أداء المزيد من الوظائف في ...

الكائنات العامة‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ في Node.js

هذه الكائنات متوفرة في جميع الوحدات (modules). قد تبدو المتغيرات التالية عامة ولكنها ليست كذلك. وهي موجودة فقط داخل نطاق الوحدات، راجع صفحة توثيق نظام الوحدات: ‎__dirname ‎__filename exports module require()‎‎‎ الكائنات المذكورة هنا خاصة ببيئة تشغيل Node.js. هناك عدد من الكائنات المضمنة التي تعد جزءًا من لغة JavaScript نفسها، والتي يمكن الوصول إليها عمومًا أيضًا. الصنف Buffer أُضيف مع الإصدار: v0.1.103. <function> يستخدم لمعالجة البيانات الثنائية. راجع صفحة توثيق buffer. ‎__dirname قد يبدو هذا المتغير عامًا ولكنه ليس كذلك. ...

الكائنات والمراجع في PHP

غالبًا ما ترد العبارة التالية كثيرًا عند الحديث عن البرمجة كائنية التوجّه في PHP 5: "تمرّر الكائنات بالمرجعية بصورة افتراضية". هذه العبارة ليست صحيحة تمامًا، وسيصحّح هذا القسم هذه الفكرة العامة بالاستعانة ببعض الأمثلة. المرجع في PHP هو اختصار يتيح لمتغيرين مختلفين الكتابة إلى القيمة ذاتها. ومنذ الإصدار الخامس من اللغة، لم يعد متغير الكائن يتضمّن الكائن نفسه كقيمة على الإطلاق، بل يتضمّن فقط معرّفًا للكائن يتيح الوصول إلى الكائن الحقيقي. وعند تمرير الكائن كمعامل أو إعادته أو إسناده إلى ...

كائنات UserList في بايثون

يعدّ UserList صنفًا يغلّف القوائم في بايثون، ويعدّ صنفًا أساسيًا مفيدًا لإنشاء أصناف شبيهة بالقوائم خاصّة بالمستخدم، والتي يمكن الوراثة منها وإعادة تعريف توابعها وإضافة توابع أخرى جديدة، وهكذا يمكن إضافة عمليات جديدة على القوائم. أصبحت الحاجة إلى هذا الصنف محدودة نظرًا لإمكانية التفريع المباشر من القوائم في بايثون، لكن التعامل مع هذا الصنف أسهل بسبب كون إمكانية الوصول إلى القائمة الضمنية كخاصية. البنية العامة class collections.UserList([list]) يحاكي هذا الصنف القوائم العادية في بايثون، ويجري الاحتفاظ بمحتويات النسخة في قائمة ...

خاصيات الكائنات في PHP

تطلق تسمية "الخاصيات properties" على المتغيّرات المعرّفة ضمن الأصناف، وهناك تسميات أخرى مثل "المعاملات" أو "الحقول"، ولكن سنستخدم التسمية الأولى "الخاصيات" في هذا الدليل. تعرّف الخاصيات باستخدام إحدى الكلمات المفتاحية public، أو protected، أو private تتبعها عبارة تصريح عن متغير اعتيادي. يمكن أن يتضمّن هذا التصريح عملية تهيئة initialization، ولكن يجب أن تكون هذه التهيئة ذات قيمة ثابتة، بمعنى أنّه يجب أن تكون قابلة للمعالجة في وقت التصريف ويجب أن لا تعتمد على المعلومات المتاحة في وقت التشغيل لغرض المعالجة. ...

الكائن Array في JavaScript

الكائن Array يُستخدَم في إنشاء المصفوفات، والتي هي قوائم شبيهة بالكائنات. إنشاء مصفوفة var fruits = ['Apple', 'Banana']; console.log(fruits.length); // 2 الوصول إلى عنصر من عناصر المصفوفة var first = fruits[0]; // Apple var last = fruits[fruits.length - 1]; // Banana المرور على عناصر المصفوفة بحلقة تكرار fruits.forEach(function(item, index, array) { console.log(item, index); }); // Apple 0 // Banana 1 إضافة عنصر في نهاية المصفوفة var newLength = fruits.push('Orange'); // ["Apple", "Banana", "Orange"] إزالة عنصر من نهاية المصفوفة var last = fruits.pop(); // إزالة Orange (من النهاية) // ["Apple", ...

الكائنات والمراجع في PHP

غالبًا ما ترد العبارة التالية كثيرًا عند الحديث عن البرمجة كائنية التوجّه في PHP 5: "تمرّر الكائنات بالمرجعية بصورة افتراضية". هذه العبارة ليست صحيحة تمامًا، وسيصحّح هذا القسم هذه الفكرة العامة بالاستعانة ببعض الأمثلة. المرجع في PHP هو اختصار يتيح لمتغيرين مختلفين الكتابة إلى القيمة ذاتها. ومنذ الإصدار الخامس من اللغة، لم يعد متغير الكائن يتضمّن الكائن نفسه كقيمة على الإطلاق، بل يتضمّن فقط معرّفًا للكائن يتيح الوصول إلى الكائن الحقيقي. وعند تمرير الكائن كمعامل أو إعادته أو إسناده إلى ...

‎سَلسَلة الكائن في PHP

سلسلة الكائنات - الكائنات في الجلسات تعيد الدالة serialize()‎‎ سلسلة نصية تتضمّن تمثيلًا لتدفق البايتات لأي قيمة يمكن تخزينها في PHP، ويمكن للدالة unseriazlie()‎ استخدام هذه السلسلة النصية لإعادة إنشاء القيمة الأصلية للمتغيّر. يؤدي تطبيق الدالة serialize()‎ على كائن ما لحفظ جميع المتغيرات الخاصة بذلك الكائن، أما التوابع فلا تحفظ وإنّما يحفظ اسم الصنف فقط. يجب تعريف الصنف الخاص بالكائن حتى يكون بالإمكان تطبيق unserialize()‎ على الكائن، بمعنى أنّه لو كان لديك كائن للصنف A وأجريت عليه عملية السلسلة، فإنّك ...

الكائن TypeError في JavaScript

الكائن TypeError يُشير إلى حدوث خطأ عندما يكون نوع المتغير أو المعامل غير صحيح. البنية العامة new TypeError([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الخاصيات والدوال التابعة للدالة البانية TypeError الخاصيات TypeError.prototype تُمثِّل هذه الخاصية كائن prototype التابعة للكائن TypeError. الدوال الدالة البانية TypeError لا تملك أيّة دوال تابعة لها مباشرةً، وإنما ترث بعض الخاصيات عبر سلسلة prototype. الكائن prototype الخاصيات TypeError.prototype.constructor تُحديد الدالة التي ستُنشِئ كائن prototype لكائنات TypeError؛ راجع صفحة الخاصيةObject.prototype.constructor لمزيدٍ من التفاصيل. TypeError.prototype.message رسالة ...

كائنات calendar.Calendar‎ في بايثون

يقدّم كائن Calendar في وحدة calendar عددًا من التوابع التي يمكن استخدامها لتحضير بيانات التقويم لغرض التنسيق. وتجدر الإشارة هنا إلى أنّ هذا الصنف لا يؤدي أي عمليات تنسيق، وأنّ هذه العمليات تقع على عاتق الأصناف الفرعية. البنية العامة calendar.Calendar(firstweekday=0) تنشئ هذه الدالة البانية كائن Calendar جديد. المعاملات firstweekday المعامل firstweekday هو عدد صحيح يحدّد اليوم الأول في الأسبوع. يمثّل العدد 0 يوم الإثنين (وهو القيمة الافتراضية) والعدد 6 هو يوم الأحد. توابع الصنف Calendar تقدّم نسخ الصنف Calendar التوابع ...

الكائن Error في JavaScript

الدالة البانية Error تُنشِئ كائن خطأ، والنسخ الكائنات من النوع Error ستُرمى عند حدوث أخطاء في وقت التنفيذ (runtime errors)؛ لاحظ أنَّ الكائن Error يُستخدَم أيضًا ككائن أساس للاستثناءات التي يُعرَّفها المستخدم. انظر أدناه للحصول على قائمة بأنواع الأخطاء القياسية المُضمَّنة في اللغة. البنية العامة new Error([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الوصف الأخطاء التي تحدث في وقت التنفيذ (runtime errors) تؤدي إلى إنشاء ورمي كائنات Error جديدة. أنواع الأخطاء بجانب الدالة البانية Error العامة، هنالك ...

كائنات UserDict‎ في بايثون

يعدّ UserDict صنفًا يغلّف كائنات القاموس في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف dict، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى القاموس الضمني كخاصية. البنية العامة ‎class collections.UserDict([initialdata]) يحاكي الصنف UserDict القاموس العادي في بايثون، وتحتفظ اللغة بمحتويات النسخة في قاموس عادي يمكن الوصول إليه عن طريق خصائص نسخة الصنف UserDict. تُهيّئ نسخة الصنف UserDict مع محتويات المعامل initialdata عند توفّرها، مع ملاحظة أنّه لا يتم الاحتفاظ بإشارة إلى ...

وراثة الكائنات في PHP

وراثة الكائنات من المبادئ المعروفة في البرمجة كائنية التوجه وتستخدمه PHP في نموذج الكائنات الخاصّ بها. يؤثّر هذا المبدأ على العلاقة التي تربط بين الأصناف والكائنات. فعلى سبيل المثال، عند توسيع صنف معين، يرث الصنف الفرعي جميع التوابع من نوع public و protected من الصنف الأب، وإن لم يتجاوز (override،أي يعيد تعريف) الصنف الابن هذه التوابع فإنّها ستحافظ على وظيفتها الأصلية. يساعد مبدأ وراثة الكائنات في تعريف الوظائف التي تؤديها التوابع وجعلها أكثر تجريدًا، ويتيح أداء المزيد من الوظائف في ...

كائنات LocaleTextCalendar‎ في بايثون

هذا الصنف متفرّع من الصنف TextCalendar. يمكن تمرير اسم المنطقة في المعامل locale إلى الدالة البانية وستعيد الدالة أسماء الأشهر وأيام الأسبوع حسب المنطقة المحدّدة. إن تضمّنت المنطقة ترميزًا خاصًّا فإنّ جميع السلاسل النصية التي تتضمّن أسماء الأشهر وأيام الأسبوع ستعاد بالترميز unicode. البنية العامة ‎calendar.LocaleTextCalendar(firstweekday=0, locale=None) المعاملات firstweekday المعامل firstweekday هو عدد صحيح يحدّد اليوم الأول في الأسبوع. يمثّل العدد 0 يوم الإثنين (وهو القيمة الافتراضية) والعدد 6 هو يوم الأحد. locale سلسلة نصية تتضمن اسم الإعدادات المحلية المطلوب ...

الكائن String في أردوينو

تنشئ الدالة String()‎ نسخةً من الصنف String. هنالك طرائق متعدِّدة لإنشاء سلاسل نصية من أنواع مختلفة من البيانات وهي استدعاء الدالة String()‎ مع: سلسلة نصية ثابتة من المحارف ضمن علامتي اقتباس مزدوجتين (أي مصفوفة من المحارف)، أو محرف ثابت وحيد ضمن علامتي اقتباس مفردتين، أو نسخة أخرى من الكائن String، أو عدد صحيح ثابت أو عدد طويل ثابت، أو عدد صحيح ثابت أو عدد طويل ثابت باستعمال أساس محدَّد، أو عدد صحيح أو عدد طويل متغير، أو عدد صحيح أو ...

كائنات Connection‎ في بايثون

تقدّم كائنات الاتصال Connection عددًا من الخصائص والتوابع التي تساعد المستخدم في التعامل مع قواعد بيانات SQLite، كالاتصال بقاعدة البيانات وتحميل الملحقات وإنشاء النسخ الاحتياطية وغيرها. تنشأ كائنات الاتصال كنتيجة لاستدعاء الدالة sqlite3.connect()‎. خصائص كائنات الاتصال تمتلك كائنات الاتصال بقواعد البيانات SQLite الخصائص التالية: الخاصية isolation_level يمكن استخدام هذه الخاصية لمعرفة مستوى العزل الافتراضي الحالي أو تعيينه. تأخذ الخاصية القيمة None لنمط الحفظ التلقائي autocommit أو إحدى القيم "DEFERRED" أو "IMMEDIATE" أو "EXCLUSIVE". راجع قسم التحكم بالإجراءات للمزيد من المعلومات. ...

مقارنة الكائنات في PHP

يمكن إجراء مقارنة بسيطة بين متغيرات الكائنات باستخدام عامل المقارنة (==)، وتكون نسختا الكائن متساويتين إن كانتا تملكان نفس المعاملات ونفس القيم (تقارن القيم باستخدام ==) وكانتا نسختين لنفس الصنف. عند استخدام عامل التطابق (===) تكون متغيرات الكائنات متطابقة عندما تشير فقط وفقط إذا إلى النسخة نفسها من الصنف نفسه. يوضّح المثال التالي هذه القواعد. المثال 1: مثال على مقارنة الكائنات في الإصدار الخامس من PHP <?php function bool2str($bool) { if ($bool === false) { ...

كائنات Cursor‎ في بايثون

كائنات Cursor هي وسيلة التواصل بين المستخدم وقاعدة البيانات، حيث يمكن باستخدام الخصائص والتوابع التي تقدّمها هذه الكائنات تنفيذ جمل SQL وإجراء الاستعلامات وجلب النتائج من قاعدة البيانات. خصائص كائنات Cursor يمتلك كائن المؤشر الخصائص التالية: الخاصية rowcount بالرغم من أنّ صنف Cursor في وحدة sqlite3 يتضمّن هذه الخاصية، إلا أنّ الدعم الذي يقدّمه محرّك SQLite لتحديد "عدد الصفوف المتأثرة"/"عدد الصفوف المحدّدة" جيّد أيضًا. يُجمع عدد التعديلات في الخاصية rowcount عند تنفيذ جمل الاستعلام بواسطة التابع executemany()‎. تتطلب معايير بايثون ...

‎سَلسَلة الكائن في PHP

سلسلة الكائنات - الكائنات في الجلسات تعيد الدالة serialize()‎‎ سلسلة نصية تتضمّن تمثيلًا لتدفق البايتات لأي قيمة يمكن تخزينها في PHP، ويمكن للدالة unseriazlie()‎ استخدام هذه السلسلة النصية لإعادة إنشاء القيمة الأصلية للمتغيّر. يؤدي تطبيق الدالة serialize()‎ على كائن ما لحفظ جميع المتغيرات الخاصة بذلك الكائن، أما التوابع فلا تحفظ وإنّما يحفظ اسم الصنف فقط. يجب تعريف الصنف الخاص بالكائن حتى يكون بالإمكان تطبيق unserialize()‎ على الكائن، بمعنى أنّه لو كان لديك كائن للصنف A وأجريت عليه عملية السلسلة، فإنّك ...

الكائن regex في بايثون

ينشأ كائن التعبير النمطي regex من تصريف التعبير النمطي بواسطة الدالة re.compile()‎، ويقدّم هذا الكائن مجموعة من الخصائص والتوابع التي يمكن من خلالها إجراء العديد من العمليات على التعابير النمطية المصرّفة. خصائص الكائن regex يقدّم الكائن regex الخصائص التالية: regex.flags رايات التطابق الخاص بالكائن regex، وتمثّل مجموعة الرايات التي تمرّر إلى الدالة re.compile()‎، إضافة إلى الرايات السطرية (‎?...‎) في التعابير النمطية، والرايات الضمنية مثل UNICODE إن كان التعبير النمطي سلسلة نصية بترميز Unicode. regex.groups عدد مجموعات الالتقاط في التعبير النمطي. ...

كائنات ChainMap‎ في بايثون

يقدّم الصنف Chainmap طريقة سريعة لربط عدد من عمليات الربط mappings ليصبح بالإمكان التعامل معها كوحدة واحدة. وعادة ما تكون هذه الطريقة أسرع من إنشاء قاموس جديد واستدعاء التابع update()‎ مرّات عدة. يمكن استخدام هذا الصنف لمحاكاة النطاقات المتشعّبة وهو مفيد في عملية القولبة templating. البنية العامة class collections.ChainMap(*maps) يجمع الصنف CmainMap عددًا من القواميس أو وسائل الربط الأخرى لإنشاء عرض مفرد قابل للتحديث. في حال تعيين قيمة المعامل maps، فإنّ الصنف يقدّم قاموسًا واحدًا فارغًا، وبهذا ستمتلك السلسلة الجديدة كائن ...

كائنات defaultdict‎ في بايثون

صنف متفرّع من الصنف الداخلي dict يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. البنية العامة ‎class collections.defaultdict([default_factory[, ...]]) تعيد الدالة البانية لهذا الصنف كائنًا جديدًا شبيهًا بالقاموس، وdefaultdict هو صنف متفرّع من الصنف الداخلي dict يعيد تعريف override تابع واحد ويضيف متغير نسخة واحدًا قابلًا للكتابة. أما بقية التوابع فهي مماثلة للصنف الرئيسي ولن توثّق هنا. يحدّد المعامل الأول القيمة الابتدائية للخاصية default_factory ويأخذ هذا المعامل القيمة الافتراضية None. أما بقية المعاملات (ومن ضمنها المعاملات المفتاحية) ...

الكائن RangeError في JavaScript

الكائن RangeError يُشير إلى حدوث خطأ وقع عندما تكون قيمة متغير رقمي أو معاملٍ ما خارج المجال المسموح. البنية العامة new RangeError([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الوصف سيرمى الخطأ RangeError عند محاولة تمرير رقم كوسيط إلى دالة لا تعدّ هذا الرقم ضمن المجال المسموح للقيم التي تقبلها؛ وسيحدث ذلك عند محاولة إنشاء مصفوفة لها طول (length) غير صحيح باستخدام الدالة البانية Array، أو عند تمرير قيم غير صالحة إلى الدوال Number.toExponential()‎ أو Number.toFixed()‎ أو Number.toPrecision()‎. ...

الكائن SyntaxError في JavaScript

الكائن SyntaxError يُشير إلى حدوث خطأ عند محاولة تفسير شيفرة ذات بنية غير صحيحة. البنية العامة new SyntaxError([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الخاصيات والدوال التابعة للدالة البانية SyntaxError الخاصيات SyntaxError.prototype تُمثِّل هذه الخاصية كائن prototype التابعة للكائن SyntaxError. الدوال الدالة البانية SyntaxError لا تملك أيّة دوال تابعة لها مباشرةً، وإنما ترث بعض الخاصيات عبر سلسلة prototype. الكائن prototype الخاصيات SyntaxError.prototype.constructor تُحديد الدالة التي ستُنشِئ كائن prototype لكائنات SyntaxError؛ راجع صفحة الخاصيةObject.prototype.constructor لمزيدٍ من التفاصيل. SyntaxError.prototype.message رسالة ...

الكائن Date في JavaScript

الدالة البانية Date تُنشِئ كائنًا من النوع Date الذي يُمثِّل لحظة زمنية معيّنة. القيمة الزمنية الموجودة في كائنات Date هي كم ملي ثانية مضى منذ تاريخ 1 كانون الثاني (يناير) 1970 بتوقيت UTC. البنية العامة new Date(); new Date(value); new Date(dateString); new Date(year, month, day, hours, minutes, seconds, milliseconds); ملاحظة: كائنات Date في JavaScript يمكن تهيئتها باستخدام Date كدالة بانية فقط، أي استدعاؤها كدالة عادية (دون المعامل new) وسيُعيد ذلك سلسلةً نصيةً بدلًا من الكائن Date، وعلى النقيض من بقية أنواع كائنات JavaScript، لا ...

كائنات Connection‎ في بايثون

تقدّم كائنات الاتصال Connection عددًا من الخصائص والتوابع التي تساعد المستخدم في التعامل مع قواعد بيانات SQLite، كالاتصال بقاعدة البيانات وتحميل الملحقات وإنشاء النسخ الاحتياطية وغيرها. تنشأ كائنات الاتصال كنتيجة لاستدعاء الدالة sqlite3.connect()‎. خصائص كائنات الاتصال تمتلك كائنات الاتصال بقواعد البيانات SQLite الخصائص التالية: الخاصية isolation_level يمكن استخدام هذه الخاصية لمعرفة مستوى العزل الافتراضي الحالي أو تعيينه. تأخذ الخاصية القيمة None لنمط الحفظ التلقائي autocommit أو إحدى القيم "DEFERRED" أو "IMMEDIATE" أو "EXCLUSIVE". راجع قسم التحكم بالإجراءات للمزيد من المعلومات. ...

الكائن JSON في JavaScript

الكائن JSON يحتوي على الدوال التي تُفسِّر صيغة JavaScript Object Notation (اختصارًا JSON) وتحوّل القيم إلى صيغة JSON. ليس الغرض من هذا الكائن هو تهيئته أو بناؤه (عبر المعامل new)، وليس له عملٌ خاصٌ به باستثناء وجود دالتين تابعتين له. الوصف صيغة JSON هي صيغة لتخزين الكائنات والمصفوفات والأعداد والسلاسل النصية والقيم المنطقية والقيمة null؛ وهي مبنية على صيغة JavaScript لكنها تختلف عنها، فبعض شيفرات JavaScript ليست صالحةً في JSON، وبعض شيفرات JSON ليس صالحةً في JavaScript. الجدول الآتي يعرض ...

الكائن jQuery.cssHooks()‎‎ في jQuery

jQuery.cssHooks القيم المعادة يعيد كائنًا من النوع Object. الوصف يتعلَّق هذا التابع بـ jQuery مباشرةً للتحكم بكيفيَّة استعادة أو ضبط قيم خاصِّيَّات CSS محدَّدة، أو توحيد أسماء خاصِّيَّات CSS، أو إنشاء خاصِّيَّات CSS مخصَّصة. jQuery.cssHooks أُضيف مع الإصدار: 1.4.3. يوفِّر الكائن ‎$.cssHooks طريقةً لتعريف دوالٍ من أجل جلب أو ضبط قيم خاصِّيَّات CSS محدَّدة. يمكن أيضًا أن يُستخدَم لإنشاء cssHooks جديد من أجل توحيد (normalizing) ميزات CSS3 مثل تأثير الظلال على إطار العناصر (box shadows)، والتدرُّجات (gradients). على سبيل المثال، ...

استنساخ الكائنات في PHP

ليس من المحبّذ في كثير من الأحيان إنشاء نسخة طبق الأصل للكائن، وأفضل مثال على ذلك هو الحاجة لنسخ من التوابع البانية وذلك عند وجود كائن يمثل نافذة GTK ويحمل مصادر هذه النافذة، وعند إنشاء نسخة ثانية فإنّك قد ترغب في إنشاء نافذة جديدة تمتلك نفس الخصائص وأن يحمل الكائن الجديد الخصائص التابعة للنافذة الجديدة. من الأمثلة الأخرى أيضًا هو أن يحمل الكائن الذي تستخدمه مرجعًا إلى كائن آخر يستخدمه وعندما ترغب في إنشاء نسخة طبق الأصل للكائن الأب فستحتاج ...

الكائن RegExp في JavaScript

الكائن RegExp هو دالةٌ بانيةٌ تُنشِئ تعابير نمطيةً (regular expressions) لمُطابَقة النص مع نمط. البنية العامة يمكن أن تأخذ التعابير النمطية الشكل الآتي (الشكل المختصر، ثم الدالة البانية، ثم الدالة RegExp): /pattern/flags new RegExp(pattern[, flags]) RegExp(pattern[, flags]) pattern التعبير النمطي. flags إذا حُدِّدَت قيمة هذا الوسيط، فستحتوي على تجميعة من الرايات الآتية. g المطابقة في كامل السلسلة النصية، أي العثور على جميع المطابقات بدل التوقف عند أوّل مطابقة. i تجاهل حالة الأحرف. m تعدد الأسطر، أي معاملة محرف البداية والنهاية (أي ^ ...

كائنات Row‎ في بايثون

نسخة من الصنف Row وتعدّ صورة محسّنة من الخاصية row_factory في كائنات الاتصال. تحاول نسخة الصنف هذه محاكاة الصفوف tuples في معظم خصائصها، وتدعم الوصول إلى العناصر بواسطة اسم العمود وموقعه، وتدعم كذلك المرور على العناصر، وتمثيلها، واختبار المساواة ومعرفة الطول بواسطة الدالة len()‎. إن امتلك كائنا Row نفس عدد الأعمدة وكان عدد العناصر فيهما متساويًا، فإنّ الكائنين متساويان. توابع كائنات Row التابع keys()‎ يعيد التابع قائمة بأسماء الأعمدة. انظر أيضًا كائنات Connection في بايثون. كائنات Cursor في بايثون. مصادر ...

استنساخ الكائنات في PHP

ليس من المحبّذ في كثير من الأحيان إنشاء نسخة طبق الأصل للكائن، وأفضل مثال على ذلك هو الحاجة لنسخ من التوابع البانية وذلك عند وجود كائن يمثل نافذة GTK ويحمل مصادر هذه النافذة، وعند إنشاء نسخة ثانية فإنّك قد ترغب في إنشاء نافذة جديدة تمتلك نفس الخصائص وأن يحمل الكائن الجديد الخصائص التابعة للنافذة الجديدة. من الأمثلة الأخرى أيضًا هو أن يحمل الكائن الذي تستخدمه مرجعًا إلى كائن آخر يستخدمه وعندما ترغب في إنشاء نسخة طبق الأصل للكائن الأب فستحتاج ...

واجهات الكائنات في PHP

تتيح واجهات الكائنات إنشاء شيفرة تحدّد التوابع التي يجب أن يتضمّنها الصنف دون الحاجة إلى تعريف آلية التحكّم في هذه التوابع. تعرّف الواجهات بنفس طريقة تعريف الأصناف، ولكن باستخدام الكلمة المفتاحية interface بدل الكلمة المفتاحية class ودون تعريف محتوى أيّ تابعٍ في الواجهة. يجب أن تكون جميع التوابع المصرّح عنها في الواجهة من النوع public وهذه هي طبيعة الواجهة. يمكن التصريح عن تابع بانٍ في الواجهة، وهو أمر مفيد في بعض الحالات، كاستخدام التابع من قبل المعامل factories. العامل implements ...

خاصيات الكائنات في PHP

تطلق تسمية "الخاصيات properties" على المتغيّرات المعرّفة ضمن الأصناف، وهناك تسميات أخرى مثل "المعاملات" أو "الحقول"، ولكن سنستخدم التسمية الأولى "الخاصيات" في هذا الدليل. تعرّف الخاصيات باستخدام إحدى الكلمات المفتاحية public، أو protected، أو private تتبعها عبارة تصريح عن متغير اعتيادي. يمكن أن يتضمّن هذا التصريح عملية تهيئة initialization، ولكن يجب أن تكون هذه التهيئة ذات قيمة ثابتة، بمعنى أنّه يجب أن تكون قابلة للمعالجة في وقت التصريف ويجب أن لا تعتمد على المعلومات المتاحة في وقت التشغيل لغرض المعالجة. ...

كائنات UserString في بايثون

يعدّ UserString صنفًا يغلّف السلاسل النصية في بايثون، ولكن الحاجة إلى هذا الصنف أصبحت محدودة نظرًا لإمكانية التفريع المباشر من الصنف str، ولكن التعامل مع هذا الصنف أسهل بسبب إمكانية الوصول إلى السلسلة النصية الضمنية كخاصية. البنية العامة class collections.UserString(seq) يحاكي هذا الصنف السلاسل النصية العادية في بايثون، ويجري الاحتفاظ بمحتويات النسخة في سلسلة نصية عادية يمكن الوصول إليها عن طريق خصائص نسخ الصنف UserString. تُسند محتويات النسخة بادئ الأمر إلى نسخة من المعامل seq. يمكن أن يكون المعامل seq ...

كائنات TextCalendar‎ في بايثون

يستخدم هذا الصنف لإنشاء تقويم بهيئة نصية صرفة plain text. البنية العامة ‎calendar.TextCalendar(firstweekday=0) المعاملات firstweekday المعامل firstweekday هو عدد صحيح يحدّد اليوم الأول في الأسبوع. يمثّل العدد 0 يوم الإثنين (وهو القيمة الافتراضية) والعدد 6 هو يوم الأحد. توابع الصنف TextCalendar التابع ‎formatmonth()‎ يعيد التابع التقويم الخاص بشهر معيّن على هيئة سلسلة نصية متعددة الأسطر. التابع ‎prmonth()‎ يطبع التابع تقويم الشهر الذي يعيده التابع formatmonth()‎. التابع ‎formatyear()‎ يعيد التابع العدد المحدد من أعمدة التقويم لسنة كاملة على هيئة سلسلة نصية ...

واجهات الكائنات في PHP

تتيح واجهات الكائنات إنشاء شيفرة تحدّد التوابع التي يجب أن يتضمّنها الصنف دون الحاجة إلى تعريف آلية التحكّم في هذه التوابع. تعرّف الواجهات بنفس طريقة تعريف الأصناف، ولكن باستخدام الكلمة المفتاحية interface بدل الكلمة المفتاحية class ودون تعريف محتوى أيّ تابعٍ في الواجهة. يجب أن تكون جميع التوابع المصرّح عنها في الواجهة من النوع public وهذه هي طبيعة الواجهة. يمكن التصريح عن تابع بانٍ في الواجهة، وهو أمر مفيد في بعض الحالات، كاستخدام التابع من قبل المعامل factories. العامل implements ...

الكائن URIError في JavaScript

الكائن URIError يُمثِّل أحد الأخطاء التي تقع عند تمرير وسائط غير صالحة إلى دالة encodeURI()‎ (أو encodeURIComponent()‎) أو decodeURI()‎ (أو decodeURIComponent()‎) البنية العامة new URIError([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الخاصيات والدوال التابعة للدالة البانية URIError الخاصيات URIError.prototype تُمثِّل هذه الخاصية كائن prototype التابعة للكائن URIError. الدوال الدالة البانية URIError لا تملك أيّة دوال تابعة لها مباشرةً، وإنما ترث بعض الخاصيات عبر سلسلة prototype. الكائن prototype الخاصيات URIError.prototype.constructor تُحديد الدالة التي ستُنشِئ كائن prototype لكائنات URIError؛ راجع صفحة الخاصيةObject.prototype.constructor لمزيدٍ ...

مقارنة الكائنات في PHP

يمكن إجراء مقارنة بسيطة بين متغيرات الكائنات باستخدام عامل المقارنة (==)، وتكون نسختا الكائن متساويتين إن كانتا تملكان نفس المعاملات ونفس القيم (تقارن القيم باستخدام ==) وكانتا نسختين لنفس الصنف. عند استخدام عامل التطابق (===) تكون متغيرات الكائنات متطابقة عندما تشير فقط وفقط إذا إلى النسخة نفسها من الصنف نفسه. يوضّح المثال التالي هذه القواعد. المثال 1: مثال على مقارنة الكائنات في الإصدار الخامس من PHP <?php function bool2str($bool) { if ($bool === false) { ...

كائنات LocaleHTMLCalendar‎ في بايثون

هذا الصنف متفرّع من الصنف HTMLCalendar. يمكن تمرير اسم المنطقة في المعامل locale إلى الدالة البانية وستعيد الدالة أسماء الأشهر وأيام الأسبوع حسب المنطقة المحدّدة. إن تضمّنت المنطقة ترميزًا خاصًّا فإنّ جميع السلاسل النصية التي تتضمّن أسماء الأشهر وأيام الأسبوع ستعاد بالترميز unicode. البنية العامة ‎calendar.LocaleHTMLCalendar(firstweekday=0, locale=None) المعاملات firstweekday المعامل firstweekday هو عدد صحيح يحدّد اليوم الأول في الأسبوع. يمثّل العدد 0 يوم الإثنين (وهو القيمة الافتراضية) والعدد 6 هو يوم الأحد. locale سلسلة نصية تتضمن اسم الإعدادات المحلية المطلوب ...

مهيئ الكائنات في JavaScript

يمكن تهيئة الكائنات باستخدام new Object()‎ أو الدالة Object.create()‎ أو باستخدام الشكل المختصرة (initializer notation). إنَّ مُهيّئ الكائنات هو قائمة فيها «صفر» زوج أو أكثر من أسماء الخاصيات مع القيم المرتبطة بها، مفصولةٌ بفواصل، ويحيط بها قوسين معقوفين {}. البنية العامة var o = {}; var o = {a: 'foo', b: 42, c: {}}; var a = 'foo', b = 42, c = {}; var o = {a: a, b: b, c: c}; var o = { property: function ([parameters]) {}, get property() ...

الكائن Function في JavaScript

الدالة البانية Function تُنشِئ كائن Function جديد، واستدعاء الدالة البانية مباشرةً يمكِّننا من إنشاء الدوال ديناميكيًا، لكنه يعاني من مشاكل تتعلق بالأداة والناحية الأمنية بما يشابه دالة eval. يجدر بالذكر أنَّ جميع الدوال في JavaScript هي كائنات Function. البنية العامة new Function ([arg1[, arg2[, ...argN]],] functionBody) arg1, arg2, ... argN الأسماء المستخدمة من الدالة للإشارة إلى الوسائط المُمرَّرة إلى الدالة، ويجب أن تكون سلاسل نصية تُمثِّل مُعرِّفات JavaScript صالحة أو قائمة من تلك السلاسل النصية التي يُفصَل بينها بفاصلة؛ مثلًا: ...

الكائن arguments في JavaScript

الكائن arguments هو كائن شبيه بالمصفوفات يمنحنا وصولًا إلى الوسائط المُمرَّرة إلى دالةٍ ما. البنية العامة arguments الوصف الكائن arguments هو متغيرٌ محليٌّ متاحٌ في جميع الدوال (عدا الدوال السهمية)، ويمكنك الإشارة إلى الوسائط المُمرَّرة إلى الدالة داخلها باستخدام الكائن arguments. يحتوي هذا الكائن على كل وسيط مُمرَّر إلى الدالة مرتبًا بنفس ترتيب تمريره بدءًا من الفهرس 0. على سبيل المثال، إذا مُرَّرتَ ثلاثة وسائط إلى دالةٍ ما، فيمكنك الإشارة إليها كما يلي: arguments[0] arguments[1] arguments[2] يمكنك ضبط قيمة الوسائط أيضًا: arguments[1] = ...

الكائن match في بايثون

ينشأ الكائن match كنتيجة لتطبيق التابعين regex.match()‎ و regex.search()‎ على التعبير النمطي المصرّف. تمتلك كائنات match القيمة المنطقية True دائمًا، ولما كان التابعان match()‎ و search()‎ يعيدان القيمة None عندما لا يكون هناك حالات تطابق، يمكن التحقق من وجود التطابق باستخدام عبارة if بسيطة: match = re.search(pattern, string) if match: process(match) تدعم كائنات match التوابع والخصائص التالية: خصائص الكائن match match.pos قيمة المعامل pos الممرّر إلى التابعين regex.search()‎ و regex.match()‎. تمثّل هذه الخاصية الموقع الذي تبدأ فيه عملية البحث ...

الكائن ReferenceError في JavaScript

الكائن ReferenceError يُشير إلى حدوث خطأ عند محاولة الإشارة إلى متغيرٍ غير موجود. البنية العامة new ReferenceError([message]) message وسيط اختياري، وهو وصفٌ نصيٌّ للخطأ موجَّهٌ للبشر. الخاصيات والدوال التابعة للدالة البانية ReferenceError الخاصيات ReferenceError.prototype تُمثِّل هذه الخاصية كائن prototype التابعة للكائن ReferenceError. الدوال الدالة البانية ReferenceError لا تملك أيّة دوال تابعة لها مباشرةً، وإنما ترث بعض الخاصيات عبر سلسلة prototype. الكائن prototype الخاصيات ReferenceError.prototype.constructor تُحديد الدالة التي ستُنشِئ كائن prototype لكائنات ReferenceError؛ راجع صفحة الخاصيةObject.prototype.constructor لمزيدٍ من التفاصيل. ReferenceError.prototype.message رسالة الخطأ. ...

كائنات OrderedDict‎ في بايثون

القواميس المرتّبة OrderedDict مطابقة للقواميس العادية باستثناء أنّها تتذكر ترتيب العناصر لحظة إدراجها فيها، بمعنى أنّه عند إضافة العناصر إلى قاموس مرتب، تعاد العناصر حسب ترتيب مفاتيحها عند إضافتها أول مرّة. البنية العامة class collections.OrderedDict([items]) تعيد الدالة البانية نسخة من صنف متفرّع عن الصنف dict تدعم جميع توابعه. كائن OrderedDict هو قاموس يتذكّر ترتيب مفاتيحه عند إدخالها أوّل مرة. وإن جرى كتابة عنصر جديد فوق عنصر موجود في القاموس المرتّب، فإنّ موضع الإدخال الأصلي لا يتغيّر، أما حذف عنصر معيّن ...

الكائن Boolean في JavaScript

الكائن Boolean هو كائن مُغلِّف لنوع القيم الأوليّة boolean (المنطقية). البنية العامة new Boolean([value]) value وسيط اختياري، وهو القيمة الابتدائية للكائن Boolean. الوصف القيمة المُمرَّرة كوسيط إلى الدالة البانية Boolean ستُحوَّل إلى قيمة منطقية إن كان ذلك ضروريًا؛ وإذا لم تُحدَّد القيمة، أو كانت 0 أو -0 أو null أو false أو NaN أو undefined أو سلسلة نصية فارغة "" فستكون القيمة الابتدائية للكائن هي false؛ وجميع القيمة الأخرى بما في ذلك أيّة كائنات أو السلسلة النصية "false" ستُنشِئ كائنًا ...

الكائن Number في JavaScript

الكائن Number هو كائن مُغلِّف (wrapper object) الذي يسمح لك بالعمل مع القيم العددية، وتُنشَأ كائنات Number باستخدام الدلة البانية Number()‎. البنية العامة new Number(value); value القيمة العددية التي سيحملها الكائن المُنشَأ. الوصف الاستخدامات الأساسية لكائنات Number هي: إذا لم يكن بالإمكان تحول الوسيط المُمرَّر إلى الدالة البانية إلى قيمة رقمية، فستُعاد القيمة NaN. عند استخدام الدالة Number دون المعامل new (أي أنها ليست دالةً بانيةً)، فيمكن أن تُستخدَم لإجراء تحويل بين أنواع القيم. الخاصيات التابعة للدالة البانية Number Number.EPSILON ...

كائنات deque‎ في بايثون

تعدّ deques صورة عامة للأكداس والطوابير stacks and queues (يقرأ الاسم هكذا "deck" وهو اختصار للعبارة "double-ended queue"). تدعم deques عمليات الإضافة والحذف من طرفي الطابور مع ضمان سلامة الخيوط thread-safe ودون استهلاك كبير للذاكرة وبأداء مقارب لأداء O(1)‎ في كلا الاتجاهين. صحيح أن القوائم تدعم مثل هذه العمليات، إلا أنّها مصمّمة للعمليات السريعة ذات الطول الثابت وتكلّف الذاكرة بمقدار O(n)‎ للعمليتين pop(0)‎ و insert(0, v)‎ واللتان تغيران حجم وموقع البيانات الضمنية الممثلة. البنية العامة ‎class collections.deque([iterable[, maxlen]]) تعيد الدالة ...

الكائن Math في JavaScript

الكائن Math هو كائنٌ مُضمَّن في اللغة الذي يملك خاصيات ودوال تُمثِّل الثوابت والدوال الرياضيّة. هذا الكائن ليس دالةً بحد ذاته، انظر قسم الوصف للمزيد من المعلومات. الوصف على النقيض من الكائنات العامة الأخرى، الكائن Math ليس دالةً بانيةً (constructor)، وجميع الخاصيات والدوال التابعة للكائن Math هي خاصيات ساكنة (static)، وهذا يعني أنَّك تستطيع الإشارة إلى الثابت الرياضي π (باي) باستخدام الخاصية Math.PI وتستطيع استخدام دالة جيب الزاوية (sine) كما يلي Math.sin(x)‎، إذ إنَّ القيمة x هي الوسيط المُمرَّر إلى ...

الكائن jQuery.cssHooks()‎‎ في jQuery

jQuery.cssHooks القيم المعادة يعيد كائنًا من النوع Object. الوصف يتعلَّق هذا التابع بـ jQuery مباشرةً للتحكم بكيفيَّة استعادة أو ضبط قيم خاصِّيَّات CSS محدَّدة، أو توحيد أسماء خاصِّيَّات CSS، أو إنشاء خاصِّيَّات CSS مخصَّصة. jQuery.cssHooks أُضيف مع الإصدار: 1.4.3. يوفِّر الكائن ‎$.cssHooks طريقةً لتعريف دوالٍ من أجل جلب أو ضبط قيم خاصِّيَّات CSS محدَّدة. يمكن أيضًا أن يُستخدَم لإنشاء cssHooks جديد من أجل توحيد (normalizing) ميزات CSS3 مثل تأثير الظلال على إطار العناصر (box shadows)، والتدرُّجات (gradients). على سبيل المثال، ...

كائنات HTMLCalendar‎ في بايثون

يستخدم هذا الصنف لإنشاء تقويم بهيئة HTML. البنية العامة calendar.HTMLCalendar(firstweekday=0) المعاملات firstweekday المعامل firstweekday هو عدد صحيح يحدّد اليوم الأول في الأسبوع. يمثّل العدد 0 يوم الإثنين (وهو القيمة الافتراضية) والعدد 6 هو يوم الأحد. توابع الصنف HTMLCalendar تقدّم نسخ الصنف HTMLCalendar التوابع التالية: التابع ‎formatmonth()‎ يعيد التابع تقويم الشهر المعطى بصيغة جدول HTML. التابع ‎formatyear()‎ يعيد التابع تقويم السنة المعطاة على هيئة جدول HTML. التابع ‎formatyearpage()‎ يعيد التابع تقويم السنة المعطاة على هيئة صفحة HTML كاملة. خصائص الصنف HTMLCalendar ...

الحقول المؤقتة (Temporary Fields)

توصيف المشكلة تحتوي الحقول المؤقَّتة على قيمٍ (وتُستخدَم وفقًا لها في الكائنات [objects]) ضمن شروطٍ مُحدَّدة، وتبقى فارغةً عند عدم تحقٌّق تلك الشروط. أسبابها تُخصَّصُ الحقول المؤقتة لاستخدامها في الخوارزميات التي تتطلَّب عددًا كبيرًا من المُدخلات (inputs)، فبدلًا من إنشاء الكثير من المعاملات في التابع (method parameters) يلجأ المُبرمِج لإنشاء حقولٍ مؤقَّتة لاحتواء البيانات المطلوبة في الصنف (class)، وبهذا فإنّ استخدام تلك الحقول لا يتعدّى تنفيذَ الخوارزميّة المُحدَّدة (ولا وظيفة أخرى لها خارج ذلك النطاق)، ويجعل وجودُ تلك الحقول من ...

استخدام التعليمة Switch

توصيف المشكلة وجود تركيبٍ معقَّدٍ لتعليمة switch أو عدّة تعليمات if متسلسلة. أسبابها ما يميِّز البرمجة كائنيّة التوجّه (OO) هو اعتمادها النادر على المعاملين switch و case، إذ تُوزَّع شيفرة switch بمواقع مختلفة من البرنامج بدلًا من تجمعيها في تعليمة switch واحدةٍ، وعند إضافة شرطٍ جديدٍ عليك إيجاد كافّة شيفرات switch لتعديلها، وكقاعدة عامّة: وجود تعليمة switch يعني أن عليك البدء بالتفكير بمبدأ التعدديّة الشكليّة (polymorphism). وما الحل؟ عزل تعليمة switch ووضعها بالصنف الصحيح عبر إنشاء صنفٍ (class) ونقل التابع ...

إضافة اتجاه الشاشة في كوردوفا

تُستخدَم إضافة اتجاه الشاشة (cordova-plugin-screen-orientation) للتحكم باتجاه الشاشة (عبر ضبطها إلى اتجاه محدَّد أو منع تغيير الاتجاه) بشكل موحَّد في المنصات iOS وأندرويد و windows-uwp. تعتمد هذه الإضافة على الواجهة البرمجية لاتجاه الشاشة، حتى تتطابق مع المواصفات الحالية. تضيف هذه الإضافة العناصر التالية إلى كائن الشاشة window.screen: // منع تغيير اتجاه الشاشة .orientation.lock('portrait') // السماح بتغيير اتجاه الشاشة .orientation.unlock() // الاتجاه الحالي .orientation‎ التثبيت يمكن تثبيت هذه الإضافة عبر الأمر التالي: cordova plugin add cordova-plugin-screen-orientation‎ الاتجاهات المدعومة portrait-primary يمثل هذا الاتجاه الوضع العمودي الأولي (primary ...

كائنات الكتابة csvwriter‎‎ في بايثون

كائنات الكتابة هي نسخ من الصنف DictWriter وتنشأ كذلك من استدعاء الدالة writer()‎. خصائص كائنات الكتابة تمتلك كائنات الكتابة الخصائص العامة التالية: csvwriter.dialect هذه الخاصية للقراءة فقط، وتتضمن وصفًا للهجة المستخدمة بواسطة كائن الكتابة. توابع كائنات الكتابة تمتلك كائنات الكتابة التوابع العامة التالية: يجب أن يكون الصف row كائنًا قابلًا للتكرار من السلاسل النصية او الأرقام عند استخدام كائنات Writer وأن يكون قاموسًا يربط أسماء الحقول fieldnames بسلاسل نصية أو أرقام (عن طريق تمريرها عبر الدالة str()‎ في البداية) عند ...

البرمجة كائنية التوجه في PHP

بدءًا من الإصدار الخامس من اللغة، أعيدت كتابة نموذج الكائنات للحصول على أداء أفضل وإضافة المزيد من الميزات، وقد كان هذا من التغييرات الكبيرة في اللغة، إذ قدّم الإصدار الخامس نموذج مكتملًا للكائنات. ومن الميزات التي قدّمها الإصدار الخامس قابلية الرؤية (visibility)، الأصناف والتوابع المجرّدة (abstract) والنهائية (final)، المزيد من التوابع السحرية (magical methods)، الواجهات (interfaces)، الاستنساخ (cloning) والإشارة إلى الأنواع (typehinting). تعامل PHP الكائنات معاملة المراجع (references) أو المقابض (handles)، بمعنى أنّ كلّ متغيّر يتضمن كائنًا مرجعيًا وليس نسخة ...

قابلية الرؤية في كائنات PHP

يمكن تعريف قابلية رؤية خاصية أو تابع أو (بدءًا من الإصدار 7.1.0 من اللغة) ثابت بأنّها إلحاق صيغة التصريح بإحدى الكلمات المفتاحية public، أو protected، أو private. يتيح التصريح من نوع public الوصول إلى أعضاء الصنف من أي مكان، ويتيح التصريح من نوع protected الوصول إلى الأعضاء من داخل الصنف نفسه أو الأصناف التي ترث الصنف أو تورّثه، أما التصريح من نوع private فيتيح الوصول إلى الأعضاء من داخل الصنف الذي عرِّف فيه ذلك العضو حصرًا. قابلية رؤية الخاصية يجب ...

كائنات القراءة csvreader في بايثون

كائنات القراءة هي نسخ الصنف DictReader وتنشأ كذلك من الدالة reader()‎. خصائص كائنات القراءة تمتلك كائنات القراءة الخصائص العامة التالية: csvreader.dialect هذه الخاصية للقراءة فقط، وتتضمن وصفًا للهجة المستخدمة بواسطة المفسر. csvreader.line_num عدد الأسطر المقروءة من المكرِّر المصدر. يختلف هذا العدد عن عدد السجلّات المعادة، إذ يمكن للسجل الواحد أن يمتدّ لعدّة أسطر. تمتلك كائنات DictReader الخصائص العامة التالية: csvreader.fieldnames إن لم تمرّر هذه الخاصية كمعامل عند إنشاء الكائن، فإنّ هذه الخاصية تُهيّئ عند الوصول إليها لأول مرّة أو عند ...

قابلية الرؤية في كائنات PHP

يمكن تعريف قابلية رؤية خاصية أو تابع أو (بدءًا من الإصدار 7.1.0 من اللغة) ثابت بأنّها إلحاق صيغة التصريح بإحدى الكلمات المفتاحية public، أو protected، أو private. يتيح التصريح من نوع public الوصول إلى أعضاء الصنف من أي مكان، ويتيح التصريح من نوع protected الوصول إلى الأعضاء من داخل الصنف نفسه أو الأصناف التي ترث الصنف أو تورّثه، أما التصريح من نوع private فيتيح الوصول إلى الأعضاء من داخل الصنف الذي عرِّف فيه ذلك العضو حصرًا. قابلية رؤية الخاصية يجب ...

الوراثة الفائضة (Refused Bequest)

توصيف المشكلة استفادة الصنف الفرعيّ (subclass) من القليل فقط ممّا ورِثه عن الصنف الأعلى (superclass) من توابعَ (method) وحقولٍ (fields)، لتبقى التوابع الأخرى غيرَ مُستخدَمةٍ أو قد يُعاد تعريفها (redefined) مع الكثير من الاختلافات. أسبابها إنشاء علاقة الوراثة (inheritance) ما بين صنفين مختلفين كليًّا بدافع إعادة استخدام الشيفرة الموجودة في الصنف الأعلى (superclass) في الصنف الفرعيّ (subclass). وما الحل؟ إن لم يشترك الصنف الفرعيّ (subclass) مع الصنف الأعلى (superclass) بشيءٍ، فالوراثة غير منطقيّةٍ بالأصل، والأفضلُ التخلي عنها بتبديلها إلى تفويض ...

الأصناف البديلة (alternative) ذات الواجهات (interfaces) المختلفة

توصيف المشكلة التطابق بالمهام (function) ما بين صنفين (classes) ولكن بأسماءٍ مختلفةٍ لتوابعهما (methods). أسبابها عدم دراية المبرمج بوجود صنفٍ آخر يكافِئ بمهامّه مهامّ الصنف الحالي الذي ينشِئه. وما الحل؟ حذف أحد الصنفين بعد تنفيذ إحدى الحلول الآتية: إعادة تسمية التوابع (methods) لتصبح متطابقةً بكافّة الأصناف البديلة (alternative) (أي الأصناف المتكافئة بالمهام). توحيد التوقيع (signature) وتعريف الاستخدام ما بين التوابع، وذلك إمّا بنقل التابع (move method) أو إضافة المعاملات (add parameters) أو دمج التوابع عبر المعاملات (parameterize method). إن كان ...

متى تحتاج إعادة التصميم؟ (When to Refactor)

نحتاج إلى إعادة التصميم (قاعدة المرات الثلاث): عند قيامك بأيّة مهمةٍ للمرّة الأولى، فالمهم هو إنجازها والحصول على النتيجة وحسب. لدى قيامك بمهمةٍ مشابهةٍ للمرّة الثانية قد ترفض بادئ الأمر فكرة التكرار ولكنك ستجد نفسك تقوم بنفس العمل! عند قيامك بالمهمة للمرّة الثالثة، ستحتاج إعادة التصميم. عند إضافة ميّزةٍ (feature) جديدة تساعد عملية إعادة التصميم (refactoring) على فهم شيفرات المبرمجين الآخرين بشكلٍ أفضل، وعند العمل على الشيفرة غير الجيدة لأحدهم فعليك بإعادة تصميمها أولًا، وهذا ضروريٌّ إذ يصبح التحكُّم بالشيفرة ...

التوابع الطويلة (Long Methods)

توصيف المشكلة تنتُج هذه المشكلة عن احتواء شيفرة التابع على الكثير من الأسطر؛ فهو أمرٌ يدعو للتساؤل حقًا إن كان التابع بأكثر من 10 أسطر! لِمَ؟ أسبابها إنَّ ما يحدث دائمًا أنْ يُضاف للتابع لا أن يُحذَف منه! وذلك لسهولة كتابة الإضافات للشيفرة مقارنةً مع قراءتها، ولن تظهر هذه المشكلة واضحةً إلا بعد تفاقمها ووصولها لحدِ لا يُحتمَل، وكذلك يجد المبرمج أنَّ كتابة تابعٍ جديدٍ أكثرُ مشقّةً من الإضافة لتابعٍ موجودٍ مسبقًا، إذ يفكر: "هما سطران وحسب، ولا داعي لتخصيص ...

التصريح عن الكائنات (Object Declarations) وتعابيرها (Expressions) في لغة Kotlin

قد تحتاج في بعض الأحيان لإنشاء كائنٍ بإجراء تعديلاتٍ طفيفةٍ على أحد الأصناف (classes) بدون التصريح عن صنفٍ فرعيٍّ (subclass) له؛ تعالج لغة Java مثل هذه الحالات بالاعتماد على الأصناف الداخليّة المجهولة (anonymous inner classes)، وتُعمِّمها لغة Kotlin من خلال طرح مفهوم التصريح عن الكائنات وتعابيرها. تعابير الكائنات (Object Expressions) لإنشاء كائنٍ من صنفٍ مجهولٍ (anonymous) يرِث من نوعٍ أو أكثر تكون الشيفرة بالشكل: window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { ...

الموارد في رابط الكائنات بالعلاقات Eloquent

مقدمة عند بناء واجهات برمجة التطبيقات (المدعوة اختصاراً APIs)، قد تحتاج إلى طبقة تحويل تقع بين نماذج Eloquent وردود JSON المعادة فعليًّا إلى مستخدمي تطبيقك. تمكّنك الموارد في Laravel من تحويل النماذج بشكل فعال وسهل، بما يتضمن مجموعات النماذج. توليد الموارد لتوليد صنف مورد، يمكنك استخدام أمر artisan make:resource. افتراضيًّا، تقع الموارد في المجلد app/Http/Resources الخاص بتطبيقك. ترث الموارد من الصنف الأساسي Illuminate\Http\Resources\Json\JsonResource: php artisan make:resource User موارد المجموعات إضافةً إلى توليد موارد لتحويل النماذج الأحادية، يمكنك توليد موارد مسؤولة ...

المعدلات في رابط الكائنات بالعلاقات Eloquent

مقدمة تمكّنك المعدّلات والموصّلات من تنسيق قيم خاصيّات Eloquent عند استردادها أو تعيينها على كائنات النماذج. مثلًا، يمكنك استخدام مشفّر Laravel لتشفير قيمة ما أثناء تخزينها بقاعدة لًا، ومن ثمّ فك تشفيرها تلقائيًّا عند استردادها من نموذج Eloquent. إضافةً إلى المعدلات والموصلات الافتراضية، يمكّنك Eloquent من التحويل التلقائي للخاصيات الزمنية إلى كائنات من الصنف Carbon أو حتى تحويل الخاصيات النصية إلى كائنات JSON. المعدلات والموصلات تعريف الموصل لتعريف موصل ما، عرف التابع getFooAttribute على صنف نموذجك حيث Foo هو اسم ...

DOM الافتراضي والكائنات الداخلية في React

ما هو DOM الافتراضي (Virtual DOM)؟ DOM الافتراضي (أو اختصارًا VDOM) هو مفهوم برمجي نحتفظ فيه بالتمثيل المثالي أو الافتراضي لواجهة المستخدم ضمن الذاكرة مع مزامنته مع DOM الحقيقي عن طريق مكتبة مثل React DOM. تُدعى هذه العمليّة بالمطابقة (reconciliation). تُمكِّن هذه الطريقة واجهة برمجة التطبيق التصريحية في React، حيث تُخبِر React الحالة التي تريد أن تكون بها واجهة المستخدم لديك، فتحرص React على مطابقة DOM مع تلك الحالة. يُجرِّد هذا التعامل مع الخاصيّات، ومعالجة الأحداث، وتحديث DOM اليدوي الذي ...

كائن ردود النداء ‎callbacks‎‎ في jQuery

يُعيد التّابع ‎jQuery.Callbacks()‎، الذي قُدِّم في إصدار jQuery 1.7، كائنًا مُتعدِّد الأغراض (jQuery.callbacks‎) يُزوِّدنا بطريقة فعّالة لإدارة قائمة ردود النداء، ويدعم إضافة، وإزالة، وإطلاق، وتعطيل ردود النداء. callbacks.add()‎ يُضيف رد نداء أو مجموعة من ردود النداء إلى قائمة ردود النداء. callbacks.disable()‎ يُعطِّل قائمة ردود النداء ويمنعها من فعل أي شيء آخر. callbacks.disabled()‎ يُحدِّد ما إذا كانت قائمة ردود النداء مُعطَّلة. callbacks.empty()‎ يُزيل كافّة ردود النداء من القائمة. callbacks.fire()‎ يستدعي كافّة ردود النداء عن طريق الوسائط المُعطاة. callbacks.fired()‎ يُحدِّد ما إذا ...

العلاقات في رابط الكائنات بالعلاقات Eloquent

مقدمة في معظم الأحيان، تكون جداول قواعد البيانات مرتبطة ببعضها البعض. على سبيل المثال، قد يكون لمقالة ما الكثير من التعليقات، أو قد تكون الطلبيّة مرتبطة بالمستخدم الذي قام بها. يجعل Eloquent العمل مع هذه العلاقات أمرًا سهلًا، ويدعم عدة أنواع من العلاقات المختلفة: واحد إلى واحد (One To One) واحد إلى كثير (One To Many) كثير إلى كثير (Many To Many) الكثير ضمن (Has Many Through) العلاقات متعددة الأشكال (Polymorphic Relationships) علاقات الكثير إلى كثير متعددة الأشكال (Many To ...

المجموعات في رابط الكائنات بالعلاقات Eloquent

مقدمة إنّ جميع مجموعات النتائج المتعددة المعادة من Eloquent هي كائنات من الصنف Illuminate\Database\Eloquent\Collection، بما فيها النتائج المستردة من التابع get أو من العلاقات. يرث صنف مجموعة Eloquent من الصنف الأساسي لمجموعة Laravel، وبالتالي ترث هذه المجموعات الكثير من التوابع التي تساعد بالعمل مع المصفوفات المستخدمة مع نماذج Eloquent. بالطبع، تعمل جميع المجموعات كمكررات، مما يمكّنك من المرور على عناصرها وكأنها مصفوفات عادية: $users = App\User::where('active', 1)->get(); foreach ($users as $user) {    echo $user->name; } لكنّ المجموعات أقوى بكثير من المصفوفات، إذ تزود الكثير ...

الروابط الساكنة المتأخرة في كائنات PHP

تضمن الإصدار 5.3.0 من PHP خاصية تدعى بالروابط الساكنة المتأخرة (late static bindings) والتي يمكن استخدامها للإشارة إلى الصنف المستدعى في سياق وراثة ساكنة. وبتعبير أدق تعمل الروابط الساكنة المتأخر عن طريق تخزين الصنف المسمّى في نهاية "الاستدعاء غير الموجِّه non-forwarding call". في حالة الاستدعاء الساكن للتوابع يكون هذا التابع هو التابع المصرّح عنه (يأتي عادة على يسار العامل ::) أما في حالة الاستدعاء غير الساكن للتوابع فيكون الصنف هو صنف الكائن. "الاستدعاء غير الموجِّه" هو استدعاء ساكن يقدَّم بواسطة self::‎‎‎ ...

دوال التعامل مع الكائنات والأصناف في PHP

تسمح لك هذه الدوال بالحصول على معلومات حول الأصناف ونسخ الكائنات. إذ تستطيع الحصول على اسم الصنف الذي ينتمي إليه الكائن. بالإضافة إلى خصائص أعضائه والدوال التابعة له، لا يُمَكّنك استخدام هذه الدوال فقط من اكتشاف عضوية كائن في الصنف، ولكن أيضًا يمكّنك من اكتشاف أصله (أي ما هو الصنف الذي يرثه صنف الكائن). الرجاء الاطلاع على قسم البرمجة كائنية التوجه (OOP) في الموسوعة للحصول على شرح مفصّل لكيفيّة تنفيذ واستخدام الصفوف والكائنات في PHP. أمثلة نُعرّف في هذا المثال ...

مقدمة إلى رابط الكائنات بالعلاقات Eloquent

مقدمة يزود رابط الكائنات بالعلاقات Eloquent ORM المضمّن في Laravel تنفيذًا بسيطًا من أجل قواعد البيانات التي تتعامل مع الـ ActiveRecord. كل جدول في قاعدة البيانات يقابله نموذج (Model) يُستخدم للتفاعل مع هذا الجدول. تمكّنك النماذج من تنفيذ الاستعلامات على البيانات الموجودة في الجداول، إضافةً إلى إضافة البيانات الجديدة. قبل البدء، تأكد من تهيئة اتصال قاعدة البيانات في الملف config/database.php. للمزيد من المعلومات حول تهيئة قاعدة البيانات، تفقّد التوثيق المناسب. تعريف النماذج للبدء، لننشئ نموذج Eloquent. تتواجد النماذج افتراضيًّا في ...

السلسلة في رابط الكائنات بالعلاقات Eloquent

مقدمة عند بناء واجهات JSON APIs، تحتاج معظم الأوقات إلى تحويل نماذجك وعلاقاتها إلى مصفوفات أو كائنات JSON. يزود Eloquent بمجموعة من التوابع المساعدة لهذه التحويلات، إضافةً إلى التحكم بالحقول التي يجب تضمينها في التحويلات. سلسلة النماذج والمجموعات السلسلة لمصفوفات لتحويل نموذج وعلاقاته المحمّلة لمصفوفة، يمكنك استخدام التابع toArray. إن هذا التابع تعاودي، لذلك ستُحوّل كل الحقول وكل العلاقات (وعلاقات العلاقات) إلى مصفوفات: $user = App\User::with('roles')->first(); return $user->toArray(); يمكنك أيضًا تحويل مجموعة كاملة من النماذج إلى مصفوفة: $users = App\User::all(); return $users->toArray(); السلسلة ...

الروابط الساكنة المتأخرة في كائنات PHP

تضمن الإصدار 5.3.0 من PHP خاصية تدعى بالروابط الساكنة المتأخرة (late static bindings) والتي يمكن استخدامها للإشارة إلى الصنف المستدعى في سياق وراثة ساكنة. وبتعبير أدق تعمل الروابط الساكنة المتأخر عن طريق تخزين الصنف المسمّى في نهاية "الاستدعاء غير الموجِّه non-forwarding call". في حالة الاستدعاء الساكن للتوابع يكون هذا التابع هو التابع المصرّح عنه (يأتي عادة على يسار العامل ::) أما في حالة الاستدعاء غير الساكن للتوابع فيكون الصنف هو صنف الكائن. "الاستدعاء غير الموجِّه" هو استدعاء ساكن يقدَّم بواسطة self::‎‎‎ ...

مدخل إلى TypeScript

يُشار إلى TypeScript على أنّها مجموعة عليا (superset) من JavaScript وتُترجم (compile) إليها. وهذا يعني بأن البرامج المكتوبة بلغة JavaScript هي برامج TypeScript صالحة كذلك، ولأنّها تُترجم إلى لغة JavaScript عاديّة، فيُمكن كتابة برامج بلغة TypeScript وترجمتها وتشغيلها في أي مكان يقبل تشغيل برمجيات JavaScript مثل المتصفّح، أو منصّة Node.js، أو أي مُحرّكٍ (engine) يدعم الإصدار ECMAScript 3 من لغة JavaScript أو أي إصدار أحدث منه. تدعم TypeScript مزايا JavaScript الجديدة والتي قيد التطوير، ما يشمل مزايا الإصدار ECMAScript 2015 ...

تبديل المصفوفات بكائنات (Replace Array with Object)

تقنية إعادة التصميم هذه هي حالة خاصة من تبديل قيم البيانات إلى كائنات. المشكلة لديك مصفوفة تحتوي على أنواع مختلفة من البيانات. الحل استبدال المصفوفة بكائن يكون له حقول منفصلة لكل عنصر. مثال قبل إعادة التصميم احتواء المصفوفة row على نوعين مختلفين من البيانات (سلسلة نصية وعدد): في لغة Java: String[] row = new String[2]; row[0] = "Liverpool"; row[1] = "15"; في لغة C#‎: string[] row = new string[2]; row[0] = "Liverpool"; row[1] = "15"; في لغة PHP: $row = array(); $row[0] = "Liverpool"; $row[1] = 15; في لغة ...

الأصناف الواسعة (Large Classes)

توصيف المشكلة احتواء الصنف (class) العديدَ من الحقول (fields) والتوابع (methods) وشيفرةً بأسطرَ كثيرةٍ. أسبابها تبدأ الأصناف صغيرةً ليزداد حجمها مع استمرار تطوُّر البرنامج (كما الحال بالتوابع الطويلة) لأنَّ المبرمج يرى أنَّ إضافة ميِّزاتٍ (features) جديدةٍ في صنفٍ موجودٍ مسبقًا أكثر سهولةً من إنشاء أصنافٍ جديدةٍ مخصَّصةٍ لها. وما الحل؟ الحل بسيطٌ جدًا؛ وهو تقسيم الصنف، وذلك بإحدى الوسائل الآتية: إنشاء صنفٍ جديدٍ (Extract Class) إن كان من الممكن فصلُ بعض مهامّ الصنف الحاليّ ونقلها للصنف الجديد. إنشاء صنفٍ فرعيٍّ ...

اختلال الشيفرات ومشاكلها (Code Smells)

قد تعاني الشيفرات الكثير من الاختلالات والمشاكل الشكلية؛ فبمجرد اكتشاف تلك الاختلالات الظاهرية، يسهل علينا معرفة العلاج (التقنيات) وتطبيقه (إعادة التصميم) للحصول على شيفرة سليمة نظيفة. من هذه الاختلالات: المبالغة والإطالة قد يزداد حجم الشيفرات والتوابع (methods) والأصناف (classes) ازديادًا كبيرًا ليصل لمرحلةٍ يصعُب التعامل معها، ولا يحدث هذا بشكلٍ فجائيِّ دفعةً واحدةً، بل يكون ناتجًا عن تراكم الإضافات أثناء تطوير البرنامج (وخاصةً عندما لا يبذل أحدٌ جهدًا للحدِّ من ذلك التشعب)، ويبدو هذا التضخم واضحًا التوابع الطويلة (long methods): ...

PHP Object Iteration

يقدّم الإصدار الخامس من اللغة طريقة لتعريف العناصر ليكون بالإمكان المرور على قائمة من العناصر باستخدام العبارة foreach على سبيل المثال، وتستخدم جميع الخصائص المرئية بصورة افتراضية لعملية المرور على العناصر. المثال 1: مثال بسيط على المرور على عناصر الكائن <?php class MyClass { public $var1 = 'value 1'; public $var2 = 'value 2'; public $var3 = 'value 3'; protected $protected = 'protected var'; private ...

الدالة object()‎ في بايثون

تعيد الدّالة object()‎ كائنًا object‎ خامًا عديمَ المزايا، وهو الكائن الذي يُعدّ أساس جميع الأصناف. ويحتوي على التّوابع الشّائعة ضمن جميع نُسخ أصناف بايثون. البنية العامة object() المعاملات لا توجد مُعاملات. القيمة المعادة كائن object‎. أمثلة المثال التّالي يوضّح كيفيّة عمل هذه الدّالة: >>> object() <object object at 0x7f4f53afd0b0> ملاحظات لا يملك الكائن object‎ التّابع الخاصّ ‎_‎_‎dict‎_‎_‎‎، لذا لا يُمكنك إنشاء خاصيّات جديدة لنسخ الصّنف object‎. مصادر قسم الدالة object في صفحة Functions في توثيق Python الرسمي.

PHP Object Iteration

يقدّم الإصدار الخامس من اللغة طريقة لتعريف العناصر ليكون بالإمكان المرور على قائمة من العناصر باستخدام العبارة foreach على سبيل المثال، وتستخدم جميع الخصائص المرئية بصورة افتراضية لعملية المرور على العناصر. المثال 1: مثال بسيط على المرور على عناصر الكائن <?php class MyClass { public $var1 = 'value 1'; public $var2 = 'value 2'; public $var3 = 'value 3'; protected $protected = 'protected var'; private ...

الصنف Object في روبي

يعدُّ الصنف Object الجذر الافتراضي لكل كائنات روبي. يَرِث الصنف Object من الصنف BasicObject ما يسمح بإنشاء تسلسلات هرمية بديلة للكائن. تُتاح توابع الكائن لكل الأصناف ما لم يتم تجاهلها (overridden) صراحةً. تندمج الوحدة Kernel ضمن الصنف Object ما يعطي الوصول العام (global) للدّوال المبنية ضمنيًّا في الوحدة. رغم أنَّ توابع النسخة المنشأة من الصنف Object معرَّفةٌ عن طريق الوحدة Kernel، رأينا أن نوثّقهم هنا لمزيد من الوضوح. عند الإشارة (referencing) إلى الثوابت في الأصناف الوارثة من الصنف Object، لا ...

عرض (100 السابقة | 100 التالية) (20 | 50 | 100 | 250 | 500).