Kontrolör içindeki değişken geçmek

3 Cevap php

Bir diğer bir denetleyici işlevi bir değişken geçmek istiyorum. Diğer bir deyişle, nasıl aynı kontrolör içinde, bir diğer işlevi değişken erişebilirsiniz?

Teşekkürler

3 Cevap

Pascal belirtildiği gibi, tek yönlü nesne üzerinde bir özelliğini ayarlamak için:

class CategoriesController extends AppController
{

  public $foo = '';  

  public function index()
  {
    $this->foo = 'bar';
  }

  public function view($id = null)
  {
    $baz = $this->foo;

    $this->set('baz', $baz);
  }

}

Ya da argüman olarak geçmesi:

class CategoriesController extends AppController
{

  public function index()
  {
    $foo = "bar";
    $this->view($foo)
  }

  public function view($param)
  {
    $this->set('bar', $param);
  }

}

Ben denetleyicisi bir özelliği tanımlayan denetleyiciye sonraki çağrılar sonra kalıcı olmadığını fark ettim.

Ancak, modelde bir özelliğini tanımlarken denetleyici fonksiyon çağrıları arasında kalıcıdır.

Lütfen Kontrolörleri sınıflar consdidering, iki çözüm var:

  • diğer bir yöntemi, bir parametre olarak değişken geçirmek; bkz Function arguments
  • veya aynı sınıftaki tüm yöntemleri görünür bir sınıf özelliği, verileri saklamak; bkz Properties

Bu çözümlerden hangisini kullanmalıyım?

Ben duruma bağlıdır varsayalım:

  • Sadece parametreler olarak ileterek, sadece iki yöntem arasında paylaşmak için bir kaç veri varsa muhtemelen gitmek için yoludur.
  • Tüm yöntemlerle paylaşılması gereken veriler varsa, ikinci bir doğru çözümdür.
  • Eğer bu iki dava arasında ise ... Muhtemelen en pratik çözümdür hangisini kendinize hakim olacak ...