PHP - Bir yöntem bir işaretçi dönebilirsiniz?

1 Cevap php

Ben bir işaretçi dönmek için çalışırken bir sınıfta bir yöntemi var:

<?php
public function prepare( $query ) {
    // bla bla bla

    return &$this->statement;
}
?>

Ama aşağıdaki hata üretir:

Parse error: sözdizimi hatası, beklenmedik '&' in /home/realst34/public_html/s98_fw/classes/sql.php çizgiye 246

Bu kod, ancak, çalışır:

<?php
public function prepare( $query ) {
    // bla bla bla

    $statement = &$this->statement;
    return $statement;
}
?>

Bu sadece PHP doğası ya da ben yanlış bir şey yapıyorum mi?

1 Cevap

PHP işaretçileri yoktur. PHP referansı var. PHP bir referans gerçek bir takma addır. Ama onları ihtiyacım yok. Nesneler kolu geçti (bu yüzden başvurular gibi hissediyorum) bellek / performans ceza var yani diğer veri PHP için bir copy-on-write mekanizmasını kullanır edilir. Onlar kopya-on-yazma devre dışı bırakmak ve bu nedenle motorun tüm optimizasyonlar olarak başvuruları kullanırken performans cezası geliyor.

Eğer gerçekten bir başvuru döndürmek istiyorsanız youhave imza bunu todeclare:

public function &prepare( $query ) {
   // bla bla bla

   return $this->statement;
}

Ama dedi: $ this-> ifadesi bir nesne ise gerek yoktur.

Ayrıca bakınız http://php.net/references