Nesne Tabanlı Programlama değişken değerleri erişim, nasıl?

2 Cevap

Ben bir öğrenci, ben db bana bağlamak yardım ve mySQL sonuç almak için bir sınıf var.

$set = $db->get_row("SELECT * FROM users");
echo $set->name;

Bu şekilde ben bir sınıfın dışında yankı sonuçlarını kullanacak.

Şimdi ben başka bir sınıf adını user oluşturduk ve bu işlevi vardır

public function name() {
    		global $db;
    		$set = $db->get_row("SELECT * FROM users");
    		$this->name = $set->name;
    }

i yankı çalıştığınızda sınıf kullanıcı başlatıldıktan sonra, $user->name i almak beklenen sonuçlar yok.

I var $name; sınıfında user Yukarıda beyan var Not

2 Cevap

Ben oldukça ben burada görmek bazı şeyleri endişe ediyorum

  1. Yöntem adı name() yöntemi yapmak gerekiyordu ne kadar korkunç ketum olduğunu. Unutmayın, yöntemleri actions - Onlara kendi adına fiil çeşit vermeye çalışın.
  2. Bir sınıfta global kullanımı (ya da hatta kullanım global period) kullanarak gerektiği zaman aggregation or composition.
  3. Herhangi bir yürütme örnek göstermek değil, ama ben sadece gerçekten test başarısız neden olan, User::name() hiç aramayacak varsayabiliriz

İşte bu endişeleri gideren bazı kod.

<?php

class DB
{
  /* Your methods and stuff here */
}

class User
{
  protected $db;
  protected $name;

  public function __construct( DB $db )
  {
    $this->db = $db;
  }

  public function getName()
  {
    if ( is_null( $this->name ) )
    {
      $set = $this->db->get_row( "SELECT * FROM users" );
      $this->name = $set->name;  
    }
    return $this->name;
  }
}

$db = new DB();

$user = new User( $db );
echo $user->getName();

Ben, benim parçası üzerinde, ben çerezleri kullanarak edilmiştir bu sorunu çok üzgünüm anladım yaşıyorum ve iki çerezler sorunları vererek hangi batmıştı: (