当前位置: 首页 > news >正文

生态建设研究所网站新蔡县住房和城乡建设局网站

生态建设研究所网站,新蔡县住房和城乡建设局网站,北京新机场建设指挥部网站,怀柔石家庄网站建设PHP5 具有完整的反射API#xff0c;添加对类、接口、函数、方法和扩展进行反向工程的能力。 反射是什么#xff1f; 它是指在PHP运行状态中#xff0c;扩展分析PHP程序#xff0c;导出或提取出关于类、方法、属性、参数等的详细信息#xff0c;包括注释。这种动态获取的信…PHP5 具有完整的反射API添加对类、接口、函数、方法和扩展进行反向工程的能力。 反射是什么 它是指在PHP运行状态中扩展分析PHP程序导出或提取出关于类、方法、属性、参数等的详细信息包括注释。这种动态获取的信息以及动态调用对象的方法的功能称为反射API。反射是操纵面向对象范型中元模型的API其功能十分强大可帮助我们构建复杂可扩展的应用。 其用途如自动加载插件自动生成文档甚至可用来扩充PHP语言。 PHP反射api由若干类组成可帮助我们用来访问程序的元数据或者同相关的注释交互。借助反射我们可以获取诸如类实现了那些方法创建一个类的实例不同于用new创建调用一个方法也不同于常规调用传递参数动态调用类的静态方法。反射api是PHP内建的OOP技术扩展包括一些类异常和接口综合使用他们可用来帮助我们分析其它类接口方法属性方法和扩展。这些OOP扩展被称为反射。 平常我们用的比较多的是 ReflectionClass类 和 ReflectionMethod类例如 代码如下: ?php class Person {/*** For the sake of demonstration, were setting this private*/private $_allowDynamicAttributes false;/*** typeprimary_autoincrement*/protected $id 0;/*** typevarchar length255 null*/protected $name;/*** typetext null*/protected $biography;public function getId() {return $this-id;}public function setId($v) {$this-id $v;}public function getName() {return $this-name;}public function setName($v) {$this-name $v;}public function getBiography() {return $this-biography;}public function setBiography($v) {$this-biography $v;} } View Code   一、通过ReflectionClass我们可以得到Person类的以下信息 1.常量 Contants2.属性 Property Names3.方法 Method Names静态4.属性 Static Properties5.命名空间 Namespace6.Person类是否为final或者abstract7.Person类是否有某个方法 接下来反射它只要把类名Person传递给ReflectionClass就可以了 代码如下: $class new ReflectionClass(Person); // 建立 Person这个类的反射类 $instance $class-newInstanceArgs($args); // 相当于实例化Person 类   1获取属性(Properties)  代码如下: $properties $class-getProperties(); foreach ($properties as $property) {echo $property-getName() . \n; } // 输出: // _allowDynamicAttributes // id // name // biography   默认情况下ReflectionClass会获取到所有的属性private 和 protected的也可以。如果只想获取到private属性就要额外传个参数 代码如下: $private_properties $class-getProperties(ReflectionProperty::IS_PRIVATE);   可用参数列表 代码如下: ReflectionProperty::IS_STATIC ReflectionProperty::IS_PUBLIC ReflectionProperty::IS_PROTECTED ReflectionProperty::IS_PRIVATE  通过$property-getName()可以得到属性名。   2获取注释 通过getDocComment可以得到写给property的注释。 代码如下: foreach ($properties as $property) {if ($property-isProtected()) {$docblock $property-getDocComment();preg_match(/ type\([a-z_]*) /, $property-getDocComment(), $matches);echo $matches[1] . \n;} } // Output: // primary_autoincrement // varchar // text   3获取类的方法  代码如下: getMethods() 来获取到类的所有methods。 hasMethod(string) 是否存在某个方法 getMethod(string) 获取方法    4执行类的方法 代码如下: $instance-getName(); // 执行Person 里的方法getName // 或者 $method $class-getmethod(getName); // 获取Person 类中的getName方法 $method-invoke($instance); // 执行getName 方法 // 或者 $method $class-getmethod(setName); // 获取Person 类中的setName方法 $method-invokeArgs($instance, array(snsgou.com));   二、通过ReflectionMethod我们可以得到Person类的某个方法的信息 1.是否“public”、“protected”、“private” 、“static”类型2.方法的参数列表3.方法的参数个数4.反调用类的方法 代码如下: // 执行detail方法 $method new ReflectionMethod(Person, test);if ($method-isPublic() !$method-isStatic()) {echo Action is right; } echo $method-getNumberOfParameters(); // 参数个数 echo $method-getParameters(); // 参数对象数组   ----- 转载于:https://www.cnblogs.com/KeenLeung/p/6041280.html
http://wiki.neutronadmin.com/news/239963/

相关文章:

  • access做网站数据方法188建站系统源码
  • 有没有免费的网站服务器国内精自品线一区91制片
  • 网站开发学什么语言好wordpress 应用店商
  • 广州网站建设系统十大免费推广平台
  • 做网站找公司怎么找有没有做任务的网站吗
  • 网站建设自助建站企业简述网站开发流程 旅游
  • 明星网站策划书网络运维工程师薪酬
  • 微山网站建设哪家便宜好看的网站设计
  • 网站开发用python吗安阳网站
  • 建设高校图书馆网站的意义佳木斯 两学一做 网站
  • 正规的佛山网站建设价格昆明手机网站建设
  • 邹平建设网站wordpress 禁止索引目录
  • 北京h5网站建设平台it外包服务包括哪些
  • 网站左右箭头素材做定制旅游最好的网站
  • 如何建一个网站多少钱Wordpress搜索html页面
  • 中新生态城建设局门户网站微商怎么做推广
  • 把网站做到wordpress里面去上海第五届进博会
  • 企业网站 asp php能让手机流畅到爆的软件
  • 网站编程源码免费app开发软件多少钱
  • 淘宝网官方网站网络营销策略存在的问题
  • 网站建设公司比较广州番禺区职业技术学校中职
  • 新闻类网站排版网站建设wordpress 搜索 自定义
  • 洛阳网站设计网站建设流程域名注册
  • 音乐网站建设水务行业国企门户网站建设
  • 专业做网站和小程序魏县网站建设推广
  • 云南省住房和城乡建设厅勘察设计处网站个人网页制作代码模板
  • 河北网站推广公司手机无法登录wordpress
  • 免费搭建网站的平台免费ppt插图高清图片
  • 网站备案后怎么做实名认证网站广告弹出来代码
  • 广州那家做网站最好昆山做网站公司有哪些