Тесты для Reflection в php

26.06.2017 12:50:39

Получение информации о методах и свойствах php класса через Reflection

Не вижу смысла расписывать все детально, просто оставлю это здесь, для упрощения новых тестов:

index.php (Download)

 <?

  require_once('in.php');
  
  $sClass = 'myTest';
  $class  = new ReflectionClass($sClass);  
  echo 'Class:<br />';
  echo '<pre>';
    print_r($class);
  echo '</pre><hr />';

  
  $sMethod = 'pub1';
  $method = $class->getMethod($sMethod);
  echo 'Method:<br />';
  echo '<pre>';
    print_r($method);
  echo '</pre><hr />';


  $param  = $method->getParameters();
  echo 'Param:<br />';
  echo '<pre>';
    print_r($param);
  echo '</pre><hr />';  


  $doc = $method->getDocComment();
  echo 'Doc:<br />';
  echo '<pre>';
    print_r($doc);
  echo '</pre><hr />';


  $constructor = $class->getConstructor();
  echo '$constructor:<br />';
  echo '<pre>';
    print_r($constructor);
  echo '</pre><hr />';


  function myfunction($a, $b) { return $a*$b; }

  //$func = new ReflectionFunction('myfunction');
  $func  = new ReflectionClass($sClass);
  $filename = $func->getFileName();
  $start_line = $func->getStartLine() - 1; // it's actually - 1, otherwise you wont get the function() block
  $end_line = $func->getEndLine();
  $length = $end_line - $start_line;

  $source = file($filename);
  $body = implode("", array_slice($source, $start_line, $length));
  print_r($body);



in.php (Download)

 <?

  /**
  * Тестовый класс
  */
  class myTest
  {
    protected $_proto1			= NULL;
    protected $_proto2			= '0';
    protected $_proto3			= 0;
    
    public $sText 				= '';
    
    /**
	* Конструктор
	* 
	* @return
	*/
    function __construct() 
    {
      
    }
    
    /**
	* 
	* @param int $x
	* @param int $y
	* 
	* @return
	*/
    public function pub1($x, $y)
    {
		return $x * $y;
	}
	
    public function pub2()
    {
		echo 'pub2 <br />';
	}
	
    /**
	* proto
	* 
	* @return
	*/
    protected function pro1()
    {
		echo 'pro1 <br />';
	}
	
    protected function _pro1()
    {
		echo '_pro1 <br />';
	}
	
    private function _priv1()
    {
		echo '_priv1 <br />';
	}
	
	static public function stztic1($x, $y)
	{
      return $x * $y;
	}
  }


Яндекс.Метрика