سؤال

قبل أن أغوص في جزء discusion سؤال سريع ؛ هل هناك طريقة لتحديد ما إذا كان المتغير هو مرجع إلى متغير/كائن آخر؟ (أريد فقط أن أتحقق من أنني أعمل مراجعًا بشكل صحيح وعدم إنشاء إصدارات مكررة من كائناتي). فمثلا

$foo = 'Hello World';
$bar = &$foo;
echo (is_reference($bar) ? 'Is reference' : 'Is orginal';

لقد كنت أستخدم PHP5 لبضع سنوات حتى الآن (الاستخدام الشخصي فقط) وأود أن أقول إنني عكست بشكل معتدل حول موضوع التنفيذ الموجهة للكائن. ومع ذلك ، فإن مفهوم إطار عمل وحدة التحكم في عرض النموذج هو جديد إلى حد ما بالنسبة لي.

لقد نظرت إلى عدد من البرامج التعليمية ونظرت إلى بعض أطر عمل المصدر المفتوح (بشكل رئيسي Codeignitor) للحصول على فهم أفضل لكيفية تناسب كل شيء معًا. بدأت أقدر الفوائد الحقيقية لاستخدام هذا النوع من الهيكل.

أنا معتاد على تنفيذ الكائن الذي يشير إلى التقنية التالية.

class Foo{
    public $var = 'Hello World!';
}
class Bar{
    public function __construct(){
        global $Foo;
        echo $Foo->var;
    }
}
$Foo = new Foo;
$Bar = new Bar;

لقد فوجئت برؤية مرجعات Codeignitor و Yii Pass للكائنات ويمكن الوصول إليها عبر الطريقة التالية:

$this->load->view('argument')

الميزة الفورية التي يمكنني رؤيتها هي رمز أقل بكثير وأكثر سهلة الاستخدام. لكنني أتساءل عما إذا كان هذا أكثر كفاءة لأن هذه الأطر من المفترض أن يتم تحسينها؟ أو ببساطة لجعل الكود أكثر سهولة في الاستخدام؟ أو بعض المزايا الأخرى؟ كان هذا مقالًا مثيرًا للاهتمام لا تستخدم مراجع PHP.

السبب في أنني أطلب أنني أحاول وضع إطار عمل معًا لمشروع شخصي ولمنحنى التعلم.

تحديث

$Baz = $Foo;
$Baz->var = 'Goodbye World!';
echo $Foo->var;

/* Ouput */
Goodbye World!

أنا محرج قليلاً لأقول إنني لا أتوقع أن أعطي هذا الناتج. بالتأكيد يجعل الأمور أسهل بكثير الآن.

هل كانت مفيدة؟

المحلول

The & Operator هي طريقة PHP4 لتمرير الكائنات بالرجوع إليها ، PHP5 يقوم بذلك افتراضيًا. الكود الذي لا يزال يستخدم هذا المشغل هو منة لتكون متوافقة مع الوراء.

لا يزال بإمكانك استخدام وأنماط بيانات أخرى بالرجوع إليها في PHP5 ، ولكن الحاجة إلى ذلك نادرة جدًا وأقترح تجنبها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top