`
edwardpro
  • 浏览: 310103 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

<![CDATA[谈谈PHP为什么不支持重载和多态]]>

阅读更多
突然又想到了,这个问题,不要说我为什么老是用别人的标准来衡量它,道理很简单,因为我要用,最近在对zend framework做一次构架改造,遇到了需要覆盖成员和重载的难题,但是很可惜php是不支持的,只能写很多不同名方法,这看起来也不错,但是仔细想想这样代码的冗余度是极高的,也不利于接口应用。

说道这个问题,就要说说我很早以前发现的php bug,最后的结论php具有执行的不确定性,当它找不到默认构造的时候的时候(也就是写入一个参量不存在的php构造方法),这个时候php依然执行了它的默认无参数构造,而这在程序中会引起很大的问题。这个问题我当时从php的bug report得到的回答这是对的,我是错的,我不知道我对对象的理解是否有问题,我只知道它执行了一个我不期望的方法,但这被认为是对的,原因就是当在没有重载概念时当然是对的,为什么不对?因为只要参数不违法就能执行,php似乎对参量控制都很松(这种松是我无法忍受的),php最大的问题就是false是没有值,不是null就是空,这是一个很奇妙的问题,等于在php中机会不会出错的,这也就能解释为什么它不能重载,因为当他发现方法没有时他根本无法判断这到底是不存在还是类没有初始化,因为他们得到的结果都是一样的!而我不知道为什么这么一个愚蠢的问题为什么得不到修正,至少我知道的语言里没有这样false不知道是啥的语言,php就是这样的。牢骚就不说了,写点难看的具有php特色的代码去。
分享到:
评论
2 楼 亚飞正传 2013-10-30  
您好,你以前是在PChome工作的?
1 楼 亚飞正传 2013-10-30  
您好,你以前是在PChome工作的?

相关推荐

    JAVA对象转换成XML(CDATA)

    [CDATA[ 文本内容 ]]&gt;`,其中"文本内容"部分不能包含字符串"]]&gt;",以防止提前结束CDATA段。同时,CDATA段不能嵌套,也就是说,一个CDATA段内部不能再有另一个CDATA段。 要将Java对象转换成XML并包含CDATA,我们可以...

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    [CDATA[ ]]&gt; 可以将特殊字符(如 `&lt;`、`&gt;`、`&` 等)包含在 XML 文件中,使得这些特殊字符不被解析器转义。 2. 提高代码可读性:使用 &lt;![CDATA[ ]]&gt; 可以将复杂的 SQL 语句包含在 XML 文件中,使得代码更加简洁和易...

    微信小程序支付(已调试通过).rar

    微信小程序支付JSAPI交易类型 已通过测试 返回例子如下: &lt;xml&gt;&lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt;

    微信开发文档

    [CDATA[toUser]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[fromUser]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;1348831860&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[this is a test]]&gt;&lt;/...

    微信时间开发源码

    [CDATA[%s]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;%s&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[%s]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt; &lt;FuncFlag&gt;0&lt;/FuncFlag&gt; &lt;/xml...

    省市区表,xml省市区

    自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为&lt;!DOCTYPE PCAroot[ &lt;!ELEMENT PCAroot (Province*)&gt; &lt;!ELEMENT Province (City*)&gt; &lt;!ELEMENT City (Area*)&gt; &lt;!ELEMENT Area (#PCDATA)&gt; &lt;!...

    PHP cdata 处理(详细介绍)

    在处理XML数据时,尤其是涉及到CDATA(Character Data)部分时,PHP的SimpleXML扩展不支持直接解析CDATA标签内的内容。CDATA部分用于包含那些不应该被XML解析器当作标记来解析的文本数据,例如程序代码或JavaScript...

    上传xml文档

    &lt;preconditions&gt;&lt;![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库&lt;br&gt; (UAT数据库IP: 10.0.13.178)&lt;br&gt; 2.数据库脚本已下载至本地环境]]&gt;&lt;/preconditions&gt;&lt;importance&gt;&lt;![CDATA[2]]&gt;&lt;/importance&gt;&lt;steps&gt; &lt;step&gt;

    asp微信开发者回复代码

    "&lt;Description&gt;为企业提供专业的、全面的、量身定制的企业业管理咨询、员工培训、企业品牌营销策划、竞争性行业分析、IT信息咨询、酒店以及职工餐饮托管等服务。" &_ "&lt;/Description&gt;" &_ "&lt;PicUrl&gt;&lt;![CDATA...

    一个简单的xml文件

    ATTLIST 电话 类别 CDATA "移动电话"&gt; ]&gt; &lt;联系人列表&gt; &lt;说明&gt;&content;&lt;/说明&gt; &lt;联系人&gt; &lt;姓名&gt;刘保文&lt;/姓名&gt; &lt;ID&gt;201003101115&lt;/ID&gt; &lt;公司&gt;腾飞汇通有限公司&lt;/公司&gt; &lt;电话 类别="移动电话"&gt;18993380967&lt;/...

    微信小程序支付统一下单报错CDATA[商户号mch_id与appid不匹配]

    [CDATA[商户号mch_id与appid不匹配]]&gt;&lt;/return&gt; &lt;/xml&gt; 原因是我拿到的商户号不是这个公众号的。一定要检查是不是这个公众号的商户号。 免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片...

    C#读取XML的CDATA节点内容实例详解

    我们的目标是读取CDATA节点中的&lt;RecordSet&gt;元素,并将其转换为可读的数据结构。 在C#中,我们可以使用XmlDocument类来读取XML文件,并解析其内容。首先,我们需要创建一个XmlDocument对象,并加载XML文件。然后,...

    chapter23 实践习题1

    例如,`&lt;department&gt;`标签使用`dept name`、`building`和`budget`属性来存储部门信息。同样,`&lt;instructor&gt;`标签使用`IID`、`name`、`dept name`和`salary`属性来描述教师。`&lt;teaches&gt;`标签则通过`IID`和`course id`...

    页里面 CDATA的作用说明

    通常情况下,CDATA节用于Script和Style元素中,以便正确地呈现JavaScript代码和CSS样式规则。 在HTML文档中,CDATA节的格式为:`&lt;![CDATA[ 内容 ]]&gt;`,其中`内`是要被包装的内容。在Script元素中,CDATA节可以将...

    5、CDATA 和转义字符1

    在XML文档中,为了保证文档的结构正确性和语义清晰性,有一些特殊的字符需要进行特殊处理,例如"&lt;"、"&gt;"、"&"等。这是因为这些字符在XML语法中具有特定含义,例如"&lt;"用于标记元素的开始,"&"用于定义实体引用。如果...

    php生成xml时添加CDATA标签的方法

    CDATA部分会告诉XML解析器忽略内部文本中的特殊字符,如"&lt;", "&gt;", "&"等,它们会被当作普通字符处理。 PHP提供了DOMDocument类用于操作XML文件,包括创建、编辑和输出。DOMDocument类中的createCDATASection方法...

    区分CDATA和PCDATA

    在这个例子中,“&lt;”和“&gt;”字符在CDATA区段内保持原样,不会被解析器误解为开始或结束标签。这使得可以在XML文档中安全地嵌入代码或其他含有特殊字符的文本。 ### PCDATA PCDATA是Parsed Character Data的缩写,...

    XML的DTD教程

    **示例**:定义一个`&lt;note&gt;`元素,其包含`&lt;to&gt;`、`&lt;from&gt;`、`&lt;heading&gt;`和`&lt;body&gt;`四个子元素,其中`&lt;to&gt;`、`&lt;from&gt;`和`&lt;heading&gt;`元素仅包含文本数据,而`&lt;body&gt;`元素可以包含文本和子元素。 ```xml &lt;!ELEMENT note...

Global site tag (gtag.js) - Google Analytics