php fonksiyon çağrıları alt çizgi

4 Cevap php

Ben bu "örtük" Onlar özel olması gerekiyordu olduğunu belirtmek için kullanılan PHP fonksiyon isimleri altını biliyorum ... ama ben sadece bu kodu gördüm:

class DatabaseConnection
{
  public static function get()
  {
    static $db = null;
    if ( $db == null )
      $db = new DatabaseConnection();
    return $db;
  }

  private $_handle = null;

  private function __construct()
  {
    $dsn = 'mysql://root:password@localhost/photos';
    $this->_handle =& DB::Connect( $dsn, array() );
  }

  public function handle()
  {
    return $this->_handle;
  }
}

print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
print( "Handle = ".DatabaseConnection::get()->handle()."\n" );

Bu kodda, ne değişkenlerin çizgi var demek?

4 Cevap

Bu yöntemler için aynı tür ve properties: kongre aynıdır: Bir çizgi başlar bir isim olan genelde private / {[(2 olarak kabul edilmesi anlamına gelir )]} .

(Of course, it's not the same with methods which have a name that starts by two underscore : those are magic methods, ve iki çizgi) "normal" yöntem adları için kullanılmamalıdır

Kongre genellikle bu:

  • Onlar dışarı sopa böylece bir çizgi genellikle korumalı / özel yöntemler ve değişkenler için kullanılır
  • İki alt çizgi __ inşa, __ get, __ set vb dilde özel bir anlama sahip olduğu gibi "sihirli" yöntemleri için ayrılmıştır, bu yüzden bilinen bir sihirli yöntemi yazma sürece bunu kullanmak gerekir.

Bu sözü, dil sadece bir kongre var, tek çizgi adları için herhangi bir özel anlam atamaz - o yüzden özel yapmak zorunda değilsiniz, ve örneğin diğer dillerde geçmişlere sahip bazı insanlar ayırt çizgi ile tüm özellikleri işaretleyiniz yöntemleri onları.

Ahh __ construct özel bir yöntemdir. O yapıcı olduğunu söyleyerek PHP yoludur. Onlar Python muhtemelen bu sihirli yöntemler nerede olduğunu çaldı.

Bir sınıf örneği olduğunda yapıcı otomatik olarak adlandırılır.

böylece nesne MyConnection oluşturursanız = DatabaseConnection () otomatik olarak arayacak:

$dsn = 'mysql://root:password@localhost/photos';
$this->_handle =& DB::Connect( $dsn, array() );

... Yapıcısındaki kodu. Eğer () daha sonra get çağırdığınızda Yani o zaman bir bağlantı olacak (Dikkatli ol, statik).

Ben bazen farklı bir yöntem içine kodu taşımak, bağlamak demek () ve oluşturucu içinde diyorsun, ben bunu iki şekilde yapabilirsiniz. Seni açma olduğu gerçek şey 'statik' yöntemi almak hayal. Bu çağrılacak, tam inşa nesnesi gerektirmez.

Özellikleri (değişkenler) sadece yöntemleri (işlevler) gibi görüş var.