كيف يمكنني تمرير المتغيرات من خلال المحتوى مؤقتا في PHP?

StackOverflow https://stackoverflow.com/questions/87468

  •  01-07-2019
  •  | 
  •  

سؤال

أساسا عندي صفحة PHP التي ينادي بعض HTML تقديمها من خلال أسلوب الكائن.يبدو مثل هذا:

بلدي صفحة PHP:

// some content...

<?php
    $GLOBALS["topOfThePage"] = true;
    $this->renderSomeHTML();
?>

// some content...

<?php
    $GLOBALS["topOfThePage"] = false;
    $this->renderSomeHTML();
?>

أول استدعاء الأسلوب مؤقتا ، ولكن أريد renderSomeHTML() لعرض مختلف قليلا استنادا إلى موقعها في الصفحة.حاولت مرورا إلى $GLOBALS ، ولكن القيمة لا تتغير ، لذا أفترض أن الأمر يزداد مؤقتا.

هذا غير ممكن من دون تمرير وسيطة من خلال الأسلوب أو من خلال عدم التخزين المؤقت ؟ أي مساعدة هي موضع تقدير.ليس هذا هو بلدي التطبيق-هو الماجنتو.

تحرير:

هذا هو الماجنتو, و يبدو أن استخدام أعطها.حاولت تمرير وسيطة من خلال renderSomeHTML () ، ولكن عند استخدام func_get_args() على PHP تشمل أن يكون جعل ما يخرج غير ما كنت وضعت فيه.

تحرير:

مزيد من أسفل الخط وكنت قادرا على "إبطال" ذاكرة التخزين المؤقت عن طريق استدعاء أسلوب مختلف أن سحبت نفس المحتوى ويمر في حجة إيقاف تشغيل التخزين المؤقت.شكرا للجميع على مساعدتكم.

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

المحلول

ومن الواضح أن كنت لا.المغزى من التخزين المؤقت هو أن 'الشيء' لك ذاكرة التخزين المؤقت لن تتغير.لذا إما:

  • توفر المعلمة
  • aviod التخزين المؤقت
  • يبطل ذاكرة التخزين المؤقت عند تعيين معلمة مختلفة

أو كتابة ذاكرة التخزين المؤقت آلية نفسك - دعم بعض الربط الديناميكي.

نصائح أخرى

Chaching يتم التعامل معها بشكل مختلف من خلال أطر مختلفة ، لذلك يجب أن تساعدنا مع بعض مزيد من المعلومات.ولكن أنا أيضا أتساءل إذا كنت يمكن أن تمر كما أن المعلمة بدلا من استخدام $GLOBALS.

$this->renderSomeHTML(true);

سؤالك يبدو غير واضح ، ولكن التخزين المؤقت تقريبا يعني 'تخزينها لذلك نحن لم يكن لديك حساب ذلك مرة أخرى'.إذا كنت تريد محتوى تختلف ، تحتاج إلى ذاكرة التخزين المؤقت المزيد من النتائج واختيار الصحيح مؤقتا كائن واحد إلى إرسالها مرة أخرى.

بحاجة الى مزيد من المعلومات لإعطاء إجابة أفضل.ما هو التخزين المؤقت الوثيقة ، سمارتي ؟ و ماذا تقصد ب "الموقع في صفحة"?ما هو 'أنها' ؟

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