2012-03-16 18 views
18

PHP5 nesnelerine özel ek açıklamalar uygulamak istiyorum ve tüm sürecin kendi çözümleyicimi oluşturarak nasıl çalıştığını öğrenmek istiyorum.Bir PHP5 nesnesinde ek açıklamalar nasıl bulunur?

Başlamak için, ek açıklamaları nasıl bulmalıyım.

Eksik olduğum bir Yansıma yöntemi var mı, yoksa başka bir yolu var mı?

Örneğin, ben bir sınıfta aşağıdaki ek açıklamayı bulmak mümkün istiyorum:

/** 
* @MyParam: myvalue 
*/ 
+0

http://stackoverflow.com/search?q=annotation+parser+php – Gordon

+1

'in olası kopyası neden Kütüphane gibi doktrin ek açıklamaları kullanmıyorsunuz? – leyou

cevap

41

Bu ReflectionClass::getDocComment kullanarak, örnek yapabiliriz Zend Framework Reflection veya diğer mevcut çözümü kullanabilirsiniz:

function getClassAnnotations($class) 
{  
    $r = new ReflectionClass($class); 
    $doc = $r->getDocComment(); 
    preg_match_all('#@(.*?)\n#s', $doc, $annotations); 
    return $annotations[1]; 
} 

Canlı tanıtım: http://codepad.viper-7.com/u8bFT4

+0

Dosyada birden fazla yorum varsa, hepsini kaptıracak mı? – johnnietheblack

+0

'-> getDocComment()' sadece, incelemekte olduğunuz nesne ile ilişkili bir doküman yorumu alır (bu şeyin bildiriminin hemen öncesindeki doküman bloğu yorumu). Nesneler, sınıflar, yöntemler, işlevler ve özellikler hakkında doc yorumları da alabilirsiniz. – MightyE

+2

@johnnietheblack http://php.net/manual/pl/class.reflectionmethod.php - yalnızca belirtilen yöntemle ilgili yorum almak için kullanabilirsiniz. – Slawek

8

Sen getDocComment Yansıma nesne yöntemi kullanılarak yorum bloğu alabilirsiniz.

elle ek açıklamayı almak istemiyorsanız, size

+0

['doctrine/annotations'] (https://github.com/doctrine/annotations) en popüler – DanFromGermany

İlgili konular