downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Reflection> <Örnekler
[edit] Last updated: Fri, 23 Mar 2012

view this page in

Yansıtma Sınıflarının Genişletilmesi

Yerleşik sınıfların özelleştirilmiş sürümlerini oluşturmak istediğiniz takdirde (yöntemler yerine üye değişkenlere kolayca erişmek veya aracı yöntemlere sahip olmak ya da renkli HTML sürümünü oluşturmak istiyorsunuz diyelim), baştan sona hepsini genişletebilirsiniz.

Örnek 1 - Yerleşik sınıfların genişletilmesi

<?php
/**
 * Kendi Reflection_Method sınıfımız
 */
class My_Reflection_Method extends ReflectionMethod
{
    public 
$visibility = array();

    public function 
__construct($o$m)
    {
      
parent::__construct($o$m);
      
$this->visibility Reflection::getModifierNames($this->getModifiers());
    }
}

/**
 * Sınıf denemesi 1
 *
 */
class {
    protected function 
x() {}
}

/**
 * Sınıf denemesi 2
 *
 */
class extends {
    function 
x() {}
}

// Bilgiler görelim
var_dump(new My_Reflection_Method('U''x'));
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

object(My_Reflection_Method)#1 (3) {
  ["visibility"]=>
  array(1) {
    [0]=>
    string(6) "public"
  }
  ["name"]=>
  string(1) "x"
  ["class"]=>
  string(1) "U"
}
Dikkat

Kurucunun üzerine yazıyorsanız, herhangi bir kod yazmadan önce ebeveynin kurucusunu çağırmayı unutmayın. Bunu yapmazsanız şöyle bir sonuç alırsınız: Fatal error: Internal error: Failed to retrieve the reflection object Türkçesi: Ölümcül hata: Dahili hata: reflection nesnesi alınamadı



add a note add a note User Contributed Notes Yansıtma Sınıflarının Genişletilmesi
khelaz at gmail dot com 28-Apr-2011 11:12
Extending class ReflectionFunction to get source code of function

<?php
class Custom_Reflection_Function extends ReflectionFunction {
   
    public function
getSource() {
        if( !
file_exists( $this->getFileName() ) ) return false;
       
       
$start_offset = ( $this->getStartLine() - 1 );
       
$end_offset   = ( $this->getEndLine() - $this->getStartLine() ) + 1;

        return
join( '', array_slice( file( $this->getFileName() ), $start_offset, $end_offset ) );
    }
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites