PHP'de (5.3+) bir \ (ters eğik çizgi) ne yapar?


173

\PHP'de ne yapar ?

Örneğin, CSRF4PHP vardır \FALSE, \session_idve \Exception:

public function __construct($timeout=300, $acceptGet=\FALSE){
    $this->timeout = $timeout;
    if (\session_id()) {
        $this->acceptGet = (bool) $acceptGet;
    } else {
        throw new \Exception('Could not find session id', 1);
    }
}

1
@mario çok güzel stackoverflow konu. Bağlantı için teşekkürler :)
Alfred

Sanırım bu soru kapalı olmalı, ama konuları kendim kapatamıyorum ..
Alfred

5
Bu bir kopya, ama kötü bir soru değil. Ancak başlığa "ters eğik çizgi" ekleyebilirsiniz, böylece başkası için Google'a gitmek daha kolay olur.
mario

1
Fark etmek önemlidir, artık elçiyi vurmuyorlar. Ne olduğunu öğrendiğinde, bizi suçlama :) OH HAYIR, ÇOK GEÇ.
Tim Post

Yanıtlar:


248

\ (ters eğik çizgi) PHP 5.3'te ad alanı ayırıcısıdır.

Bir \işlevin başlangıcından önceki A , Global Ad Alanı'nı temsil eder .

Buraya koymak, geçerli ad alanında aynı ada sahip bir işlev olsa bile, çağrılan işlevin genel ad alanından olmasını sağlar.


1
Teşekkürler! google kullanarak buldunuz veya bunu zaten biliyor muydunuz: P?
Alfred

6
Akıllıca çalışarak buldum. Henüz PHP 5.3'ü kullanma şansım olmadı ve cevapla ilgileniyordum. Bir dakika sürdü ama buldum.
Alan Geleynse

1
php backslashHangi ad alanı ayırıcı olarak seçim serpintisi ile ilgili bir makaleye yol açtı ile başladı , sonra php namespacebana belgeleri aldı.
Alan Geleynse

20
"Fonksiyondan önce php ters eğik çizgi" googling beni buraya getirdi.
igneosaur

4
@igneosaur googling "Ben bir ön uç geliştirici ve PHP korkunç" beni buraya getirdi
Telarian

23

Ad alanları

PHP 5.3 ve sonraki sürümlerinde ters eğik çizgi \ ad boşluklarında simgesi kullanılır. Bir ad alanını belirtmek için başlangıç ​​sembolüdür ve ayrıca alt ad alanı adları arasında ayırıcı görevi görür.

Hakkında resmi belgelere bakın için ad .

Opcache

Ayrıca PHP 7.0 ve sonraki sürümlerinde bazı işlevler OPCache tarafından opcodes ile değiştirilir , bu da bu belirli işlevlerin çok daha hızlı çalışmasını sağlar. Ancak bu yalnızca işlevler kök ad alanına yerleştirildiğinde çalışır. Bu konuyla ilgili bu tartışmaya bakın . Dolayısıyla, ad boşluğunun yanı sıra dolaylı olarak kod optimizasyonunu da etkiler.\

Aşağıdaki yerel işlevler bu etkiden yararlanır:

"array_slice"
"assert"
"boolval"
"call_user_func"
"call_user_func_array"
"chr"
"count"
"defined"
"doubleval"
"floatval"
"func_get_args"
"func_num_args"
"get_called_class"
"get_class"
"gettype"
"in_array"
"intval"
"is_array"
"is_bool"
"is_double"
"is_float"
"is_int"
"is_integer"
"is_long"
"is_null"
"is_object"
"is_real"
"is_resource"
"is_string"
"ord"
"strlen"
"strval"

22

Potansiyel karışıklığı açıklığa kavuşturmak için:

Ters eğik çizgi , sınıf mirası anlamına gelmez .

Aşağıda, Animal, Dog, Shepherdsınıfları, ama sadece olması gerekmez ad . Çarpışmaların isimlendirilmesinden kaçınmak için isimleri bir arada gruplamak için kullanılan bir şey .

$myDog = new \Animal\Dog\Shepherd\GermanShepherd();

Başlıca \araçlar Animalküresel kapsamda ilan edildi.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.