& Taşımak için en iyi yol

2 Cevap php

Ben bir ileti / uyarı sistemi elde etmek için "en iyi uygulama" yol arıyorum. Ben komut dosyası için bir cepten dayalı bir yaklaşım kullanıyorum ve bu satırlar boyunca bir şey yapmak istiyorum:

if(!$something)
   $messages->add('Something doesn\'t exist!');

Mesajlar sınıfında add () yöntemi biraz bu gibi görünüyor:

class messages {
   public function add($new) {
      $messages = $THIS_IS_WHAT_IM_LOOKING_FOR; //array

      $messages[] = $new;
      $THIS_IS_WHAT_IM_LOOKING_FOR = $messages;
   }
}

Sonunda, $ mesajları okur gibi güzel biçimlendirilmiş HTML her mesaj döndürür bir yöntem yoktur.

Yani soruları - I $THIS_IS_WHAT_IM_LOOKING_FOR için değişkenin ne tür kullanıyor olmalıdır?

  • Ben bu veritabanını kullanmak yapmak istemiyorum. Db sadece çalışma zamanında meydana gelen ve 5 saniye sonra kaybolur bazı iletiler için her zaman sorgulama sadece overkill gibi görünüyor.
  • Sabitleri zamanla değişebilir değişkenler olmak anlamına gelmez çünkü bu küresel sabitlerini kullanarak, görünüşte kötü bir uygulamadır. Işe olsaydı ben bile bilmiyorum.
  • Ben her zaman bir yeni bir mesaj eklemek istediğiniz her zaman geçmek ve yöntemi ile mevcut $messages dizi dönmek istemiyorum.
  • Hatta bunun için bir oturum var kullanarak çalıştı, ama (o zaman 1 pageload çok geç olacaktır) Açıkçası tüm bu amaç için uygun değildir.

Herhangi bir öneriniz?

Teşekkürler!

EDIT: Added after I caused some confusion with the above... The $messages array should be global: I need to be able to add to it through various different classes as well as at the top-level of the whole script.

Akla gelen en iyi karşılaştırma zamanında meydana gelen tüm iletileri saklamak için bir veritabanı kullanmak, ve çıkış zamanı geldiğinde, veritabanı ve çıkış her mesaj sorgulamak için. Bu karşılaştırma için istisna $ mesajları dizinin ömrü (onlar sayfa yükleme sırasında birikir, ve hemen sonra kaybolur) sayfa yükleme sadece olmasıdır.

Yani, örneğin, ben komut birbiri ardına çalışan 10 farklı eylemler var söylüyorlar. Bu eylemlerin her biri, farklı bir sınıfın faydalanmak. Bu sınıfların her biri $messages->add() göndermek gerekir. 10 eylemler çalıştırdıktan sonra, "çıkış zamanı", ve $ mesajlar dizisi tüm farklı sınıflar ile eklenmiştir kadar 10 farklı mesajlar içerebilir.

Ben bu bunu biraz açıklar umuyoruz.

2 Cevap

Ne yapmak istediğiniz konusunda tam net değilim, ama iyi bir yolu, sadece özel bir değişken kullanmak olacaktır:

class messages {
   private $messages = array();
   public function add($new) {
     $this->messages[] = $new;
   }
   public function output() {
     // Whatever; e.g. a foreach loop that echoes all the messages
   }
}

Ben size bir örnek alanı ya gerektiğini düşünüyorum.