PHP: Reflection API - Büyük Toplama Minik kullanımı ile PHP için

1 Cevap php

Reflection API OOP şeyler işlemek için orada harika bir şey olduğunu ve geliştiricilerin çoğu bile farkında değildir ya da hiç kullanılmamış gibi görünüyor.

Reflection API Claims:

PHP 5 comes with a complete reflection API that adds the ability to reverse-engineer classes, interfaces, functions, methods and extensions. Additionally, the reflection API offers ways to retrieve doc comments for functions, classes and methods.

Question:

  • Neden kendi yöntemleri / özellikleri çoğu için hemen hemen hiçbir belgelerine sahiptir? Sen belgelerine orada bu iletiyi görürsünüz:

This function is currently not documented; only its argument list is available.

Nerede tüm belgeleri bulmak için?

  • Gelecekteki uyumlu, diğer bir deyişle, benim MVC çerçevesinde kullanabilir mi?
  • Neden onunla yanlış bir şey, daha az sıklıkla kullanılmaktadır?

1 Cevap

Yansıma kesinlikle burada kalmaktır. Bunu kullanmak, ama akılda tutmak olabilir yavaş ve basit UseCases için overkill olduğu söyleniyor. Classes/Objects function package işlevlerin biri kullanılması genellikle daha hızlı bir alternatiftir.

Bir sınıfın bilgilendirme kısmı ek not için ayrıştırma zaman Yansıma kullanışlı gelen bir usecase olduğunu. Örneğin, PHPUnit bir yöntemi bir test düşünmelisiniz PHPUnit TestRunner anlatmak için testin @ açıklamaları kullanır. @ Açıklama bu Kod Kapsamı veri toplamaya yardımcı olacaktır kapsar. Akışı3 çerçeve Annotations for their AOP framework kullanır.

Ne yazık ki,> 5.3 PHP yeni bazı eklemeler, henüz o kadar belgelenmiş değildir. Just look at the SPL. Aynı şey. Bu olsa kullanamayacağınız anlamına gelmez. Reflection API çok anlamlı ve yöntem isimleri anlamaya kolaydır. Ve Google genellikle belirli uzantıları nasıl kullanılacağı hakkında blog mesajları vardır. Yansıma API için, check out:

ve SPL


Ben sadece son zamanlarda keşfedilen soğuk bir şey. 5.1.2 olarak, olabilir invoke the Reflection API from the command line çok:

$php --rf strtotime
Function [ <internal:date> function strtotime ] {

  - Parameters [2] {
    Parameter #0 [ <required> $time ]
    Parameter #1 [ <optional> $now ]
  }
}