Eğer PHP bir yöntem içinde bir yöntem adı alabilir miyim?

6 Cevap php

Böyle bir şey yapmak mümkün mü?

public function something() {
    $thisMethodName = method_get_name(); 
}

Nerede method_get_name() yöntemin adını döndürür?

6 Cevap

Tabii, sen sihirli sabitler istiyorum.

function myFunction() { print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; }

the php manual daha öğrenin

Eğer "__ __METHOD" magic constant kullanabilirsiniz, ben son derece php en reflection kontrol öneriyoruz. Bu PHP5 desteklenir.

$modelReflector = new ReflectionClass(__CLASS__);
$method = $modelReflector->getMethod(__METHOD__);

Vs, imza incelemek gibi Daha sonra göt şeyler tekme yapabilirsiniz

Ben böyle soruları aswering bazı danışmanlık içermelidir düşünüyorum. __FUNCTION__ hata ayıklama amacıyla kullanılacak olması gerekiyordu. Şüpheli diğer durumlarda kullanma. Sanırım bu şey "Adımın ne olduğunu biliyor musunuz" ile ulaşmak istediği görevi tanımlamak için yazar öneririz. Ve biz onu biraz daha kabul edilebilir bir çözüm icat yardımcı olacaktır.

Neden bunu yapamaz?

public function something() {
    $thisMethodName = "something";
}

Hackish, ama aynı zamanda muhtemelen debug_backtrace () dönüş değeri üzerinden kazmak olabilir.

Kullanımı __FUNCTION__ gitmek yerine yoludur:

public function something() {
    $thisMethodName = "something";
}

bir dize olarak yöntem adı depolamak için bir değişken ve bellek ekleyerek ve zaten var ne çoğaltarak, böylece gereksiz yere (birçok yöntemleri ile büyük bir kütüphanesi için bunu yaparsan, o ölçüde önemli), kullanılan kaynaklar ekleyerek çeşitli şekillerde kusurlu olan.

Yöntem adı değişmiş olsaydı bu yaklaşım uygulanabilir düzenlemeyi gerektirecek ise PHP sihirli sabitler, böylece (basitçe bir başka gereksiz bir düzenleme olduğunu, yani ben potansiyel dedin, dikkat bir tutarsızlık potansiyelini tanıtan, değiştirmek için değil garantili eğer sihirli Sabit yerine) kullanıldı.

Zaman ve gereksiz değişken ve tabii düzgün PHP ile başlayacak sihirli sabitler temin için motivasyon değişken adını, başvuru atanmış bir dize gibi bir değişken, yeniden tip yöntem adı isim çaba (ve {herhangi bir iddiayı çürütmektedir [(0)]}) gereksizdir.