为了账号安全,请及时绑定邮箱和手机立即绑定

PHP的一些问题

PHP的一些问题

莫回无 2019-04-19 16:29:15
今天被pdo的lastInsertId折腾了一下午,实在是醉了,使用exec执行insert导致lastInsertId返回的始终是0,必须使用prepare/execute才能正常获取。好多时候都觉得PHP为什么这么随意啊,empty/isset/is_null,嘿,真TMD奇葩啊(我就爆粗了怎么了,不能忍)。可能是历史遗留原因,或者是有一些我不知道的原因请一定指出来,一直很奇怪当初设计的时候为什么不能是:is_empty/is_set/is_null,或者是:isEmpty/isSet/isNull?这样的例子还体现在str类函数上,这里面还有参数顺序的问题,比如str_replace目标字符串在后面,substr/strpos在前面,我就想问下,一门语言怎么能随意到这种程度呢?另外还有类型转换,每次拿到用户传过来的值都有点怕怕呢,很多方法不加strict都不敢用呢,我问你为什么这样,你说:因为我“弱”啊!你看只要你不用===,判断我都可以一溜烟跑下去呢!剩下就是异常,可预见性的要么是exit/die,高大上一点的就用Exception,不过大多数Exception还要我自己抛呢。这还没完,大人您还有error呢,还有等级呢,异常还捕获不到呢,要做跳板呢。
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

不要遇了点挫折就全盘否定好不好。被PDO折腾一下下午说明你对PHP还不够熟悉而已,就算不熟悉,难道没有手册,不会百度吗,网上找一个完整可用的例子看完再写不行?这也能怪PHP?用句潮语来说:“我也是醉了”。要多点从自己身上找问题好吗?
你说的函数名不统一、比较乱等问题,本身就是有它的历史原因,PHP的使用者众多,很多东西不是说改就改的。当然随着时间推移,我们现在慢慢看到PHP在不断进步,PHP7.0也即将发布了,它所做的性能优化和新添加的特征,都是值得我们期待的。
以前也用过JAVA,现在用PHP也差不多3年了,也没有感觉弱类型有什么不好的,习惯了你就完全可以把控它。
有时候,发发牢骚没关系,特别是不熟悉的时候都容易这样。但一门语言你既然选择它,就是看中它的优势来的。老是盯着它的不好还怎么学、怎么进步。如果觉得它哪里不好,自己可以尝试找办法去解决或者弥补它的不好,当然前提是你花更多时间去了解它。
                            
查看完整回答
反对 回复 2019-04-19
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

既然举报我答非所问,我就改一下吧。重新看了一遍题主的问题,一大堆吐槽里面夹着一句问题:“我就想问下,一门语言怎么能随意到这种程度呢?”感觉题主是来求认同的而不是来求解惑的。很想反问题主:提问题怎么可以随意到这种程度呢?
PHP语言的高度不一致性的确让很多人吐槽过了,这是事实,而造成这一现状的根本原因是PHP压根儿就不是一门设计出来的语言,而是一门成长出来的语言。
当年是一个哥们儿觉得CGI写Web服务器程序太麻烦了,然后就自己折腾出了一个开发个人网站的工具包,后来丢到了开源社区,社区上的人们都觉得这个工具包还不错,于是你加一点功能,我加一点功能地扩展这个工具包,最后演化成了PHP语言。早期PHP就是PersonalHomePage的缩写,后来为了赶时髦才改成了回文式的PHP:HypertextPreprocessor。
像Ruby、Python或者C#这些语言,都是由颇具经验的软件开发人员精心设计而来的。一开始就是为了做出一种适用于某些场景的程序设计语言,语言一致性高,语法设计精妙,处处闪烁着设计者的智慧和经验。而且这些语言从发布之日起就一直是官方团队领头开发,社区贡献的代码都需要经过严格审核才能进入核心版本库。
然而早期的PHP根本没有所谓核心开发组,大家在各个技术新闻组上交流意见,用FTP分享代码。PHP解释器是用C写的,大家纷纷把各种C语言的代码库包装成PHP语言的函数,于是也保留下来各种流派的函数命名规则。后来甚至就连最早开发和发布PHP的那哥们儿也不管了,一直到3.0版时,社区才有了几个人组成核心团队来发布官方版本,然而他们更主要的工作是协调社区意见和提供bug跟踪。PHP的面向对象模型更是到了5.0时代才由Zend公司的开发者做出来。
是不是觉得非常乱?告诉你一个事实:不光PHP,整个Web世界就是一片混乱中搞出来的。你看HTML里的标签,为什么有全写也有缩写,、这种写法和<img>、<ul>这种写法并存?因为HTML发展之初也是没标准的,早期有过<imgsrc="xxx">的写法,也有过<imagehref="xxxx">的写法,不同的个人开发者给出不同的实现罢了,直到有一天,支持第一种写法的浏览器成为绝对主流了,于是才有了标准。<pre>PHP一直是典型的自由软件的运作方式,先有大家的自由改进,然后互取所长,然后攒出一个较优选择成为官方,然而大把多人在官方基础之上自己改东西,有一些有幸被官方收纳到未来版本人,有一些就沉没了。<pre>那么怎么解决乱这个问题呢?许多人都提出了解决方案,比如把命名不一致的函数封装到框架里,把empty之类的像函数而又不是函数的语法也封到框架里,把一切混乱包起来,只对开发者暴露出优雅的部分。然而现实情况是PHP语言领域没有一套唯一的框架,世界上的知名PHP开发框架不下20种,各公司各团队自己库和框架更是海了去了。<pre>PHP最后就和C语言一样,只能靠人来解决这个问题——别写烂代码,尽管语言允许你乱写——选择一种大家喜欢的语言风格,定为团队标准,然后执行它。还有,用一个好的IDE,自动完成提示能把你从记忆各种不同风格的函数中解放出来。<pre><pre>
                            </div>
                            <div class="js-show-reply-btn hide-answer-morebtn hide">查看完整回答</div>
                        </div>
                        <div class="ctrl-bar js-wenda-tool">
                            <span class="moco-ico-btn moco-btn-gray-l js-agree-with " data-ques-id="542993" data-answer-id="520320" data-hasop=""><i class="icon-thumb-revert"></i></span>
                            
                            <span class="moco-ico-btn moco-btn-gray-l js-oppose " data-ques-id="542993" data-answer-id="520320" data-hasop=""><i class="imv2-thumb_down"></i><em>反对</em></span>
                            <a href="javascript:;" class="reply-del js-replay-answer-list" data-answer-id="520320" data-ques-uid="6798194">回复</a>

                                                                                                                <span class="time r">2019-04-19</span>
                        </div>
                                                <div class="reply-con">
                            <ul class="reply-list">
                                                            </ul>
                                                        
                        </div>
                    </div>
                </div>
                            </div>
                                </div>
    </div>

    <div class="right-block">
        <div class="detail-info">
            <ul class="number">
                <li>
                    <em>2</em>
                    <span>回答</span>
                </li>
                <li>
                    <em>0</em>
                    <span>关注</span>
                </li>
                <li>
                    <em>329</em>
                    <span>浏览</span>
                </li>
            </ul>
                        <a href="javascript:void(0)" data-id="542993" title="关注" class="moco-btn moco-btn-gray-l js-collection-btn">
                <span class="js-detail-follow">关注</span>
            </a>
                        <div class="info-footer">
                <div class="small-share l wd-share">
                    <ul class="share-wrap">
                        <li class="weichat-posi js-top-share">
                            <div class="bdsharebuttonbox weichat-style bdshare-button-style0-16" data-tag="share_1" data-quesid="542993">
                                <a href="#" class="bds_weixin icon-nav icon-share-weichat" data-cmd="weixin" title="分享到微信"></a>
                                <a href="#" class="bds_qzone icon-nav icon-share-qq" data-cmd="qzone" title="分享到QQ空间"></a>
                                <a href="#" class="bds_tsina icon-nav icon-share-weibo" data-cmd="tsina" title="分享到新浪微博"></a>
                            </div>
                        </li>
                    </ul>
                </div>
                <div class="status-box r">
                                    </div>
            </div>
        </div>
        <!-- 详情页广告位 -->
        <div id="#wendaDetailRight"></div>
        
        <!-- <div class="adver-con">
                    </div> -->
        <!-- 相关问题 -->
                <div id="wendaDetailRight"></div>
        
                    <div class="recommend-zhuanlan">
                <div class="title">慕课专栏</div>
                <a class="more" href="/read" target="_blank">更多<i class="imv2-arrow2_r"></i></a>
                <ul>
                                            <li class="clearfix">
                            <a href="/read/74?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5e906f08000176b005400720.jpg)">
                                                                    </div>
                            </a>
                            <div class="text_con r">
                                <a href="/read/74?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                    <p class="title">数据结构与算法(前端版)</p>
                                </a>
                                <div class="info">
                                    <span>共24小节</span>
                                    <i class="imv2-dot_samll"></i>
                                    <span>492人已购买</span>
                                </div>
                                <div class="price_con clearfix">
                                                                            <div class="price l ">
                                            <p class="ori l">¥ 58.00</p>
                                        </div>
                                                                        <div class="btns r">
                                                                                    <a href="javascript:;" onclick="$('#js-signin-btn').click();">
                                                <div class="goBuy">马上订阅</div>
                                            </a>
                                                                            </div>
                                </div>
                            </div>
                        </li>
                                            <li class="clearfix">
                            <a href="/read/72?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5e6af0f50001b61d05400720.jpg)">
                                                                    </div>
                            </a>
                            <div class="text_con r">
                                <a href="/read/72?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                    <p class="title">Web前端开发修炼指南</p>
                                </a>
                                <div class="info">
                                    <span>共30小节</span>
                                    <i class="imv2-dot_samll"></i>
                                    <span>1764人已购买</span>
                                </div>
                                <div class="price_con clearfix">
                                                                            <div class="price l ">
                                            <p class="ori l">¥ 58.00</p>
                                        </div>
                                                                        <div class="btns r">
                                                                                    <a href="javascript:;" onclick="$('#js-signin-btn').click();">
                                                <div class="goBuy">马上订阅</div>
                                            </a>
                                                                            </div>
                                </div>
                            </div>
                        </li>
                                            <li class="clearfix">
                            <a href="/read/70?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5e5c85e1000116c505400720.jpg)">
                                                                    </div>
                            </a>
                            <div class="text_con r">
                                <a href="/read/70?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                    <p class="title">解锁前端面试体系核心攻略  </p>
                                </a>
                                <div class="info">
                                    <span>共50小节</span>
                                    <i class="imv2-dot_samll"></i>
                                    <span>2380人已购买</span>
                                </div>
                                <div class="price_con clearfix">
                                                                            <div class="price l ">
                                            <p class="ori l">¥ 78.00</p>
                                        </div>
                                                                        <div class="btns r">
                                                                                    <a href="javascript:;" onclick="$('#js-signin-btn').click();">
                                                <div class="goBuy">马上订阅</div>
                                            </a>
                                                                            </div>
                                </div>
                            </div>
                        </li>
                                            <li class="clearfix">
                            <a href="/read/68?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5e40b3010001fac905400720.jpg)">
                                                                    </div>
                            </a>
                            <div class="text_con r">
                                <a href="/read/68?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                    <p class="title">高薪之路—前端面试精选集</p>
                                </a>
                                <div class="info">
                                    <span>共25小节</span>
                                    <i class="imv2-dot_samll"></i>
                                    <span>1345人已购买</span>
                                </div>
                                <div class="price_con clearfix">
                                                                            <div class="price l ">
                                            <p class="ori l">¥ 58.00</p>
                                        </div>
                                                                        <div class="btns r">
                                                                                    <a href="javascript:;" onclick="$('#js-signin-btn').click();">
                                                <div class="goBuy">马上订阅</div>
                                            </a>
                                                                            </div>
                                </div>
                            </div>
                        </li>
                                            <li class="clearfix">
                            <a href="/read/38?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                <div class="img l" style="background-image:url(//img1.sycdn.imooc.com/5d15f85300011f5f03600480.jpg)">
                                                                    </div>
                            </a>
                            <div class="text_con r">
                                <a href="/read/38?mc_marking=610b2318dc116ddeaac5fecfe6b23058&mc_channel=ywxqzl" target="_blank">
                                    <p class="title">JavaScript 设计模式精讲</p>
                                </a>
                                <div class="info">
                                    <span>共29小节</span>
                                    <i class="imv2-dot_samll"></i>
                                    <span>1595人已购买</span>
                                </div>
                                <div class="price_con clearfix">
                                                                            <div class="price l ">
                                            <p class="ori l">¥ 48.00</p>
                                        </div>
                                                                        <div class="btns r">
                                                                                    <a href="javascript:;" onclick="$('#js-signin-btn').click();">
                                                <div class="goBuy">马上订阅</div>
                                            </a>
                                                                            </div>
                                </div>
                            </div>
                        </li>
                                    </ul>
            </div> 
                <!-- 相关课程 -->
        <div class="related_lessons js-related_lessons">
            
        </div>
        <!-- 相关课程end -->
    </div>
</div>

<div class="js-answer-shade-pop"></div>
<div class="answer-pop answer-hidden js-answer-pop js-msg-context">
    <h3>添加回答<span class="js-close-udtiorpop imv2-close"></span></h3>
    <textarea class="answerbox" id="js-reply-editor-box"></textarea>
    <div id="js-qa-ci-footer" class="qa-ci-footer clearfix">
        <span class="qa-tips"></span>
        <div class="qa-ci-footright">
            <div class="captcha-verify-box js-answer-verify-box hide"></div>
            <button id="js-wenda-ci-submit" class="r moco-btn moco-btn-green detail-ans disabled" data-qid="542993">回答</button>
        </div>
    </div>
</div>


<div class="pop-tips-layer"></div>
<!-- 底部注册悬浮框 PM-苏Hl -->
<div class="bottom-login-box hide">
    <div class="logo-mkw"></div>
    <div class="desc-mkw">
    </div>
    <div class="logo-box">
        <!-- <a href="https://www.imooc.com/user/newsignup" class="btn register-btn">注册</a>
        <a href="https://www.imooc.com/user/newlogin" class="btn login-btn">登录</a> -->
        <a href="https://www.imooc.com/act/june2021?utm_source=shouji&utm_campaign=footips" target="_blank" class="btn register-btn">了解更多</a>
    </div>
    <span class="btn-close imv2-close js-close-login-box"></span>
    <!-- <div class="thirdpart-box">
        <div class="thirdpart-title">其他方式登录</div>
        <div class="thirdpart-item">
            <a href="https://www.imooc.com/user/newlogin" class="thirdpart-icon icon-weixin"></a>
            <a href="https://www.imooc.com/user/newlogin" class="thirdpart-icon icon-share-weibo"></a>
            <a href="https://www.imooc.com/user/newlogin" class="thirdpart-icon icon-share-qq"></a>
        </div>
    </div> -->
</div>
<div class="tipoff-block js-tipoff-block"></div>
<div class="tipoff-box js-tipoff-box">
	<div class="tipoff-top-box clearfix">
		<p class="l tipoff-title">举报</p>
		<span class="r tipoff-close-btn icon-close2 js-tipoff-close"></span>
	</div>
	<div class="tipoff-type-box js-tipoff-typebox clearfix">
		<div class="tipoff-loading">
		  	<div class="bounce1"></div>
			<div class="bounce2"></div>
			<div class="bounce3"></div>
		</div>
	</div>
	<div class="tipoff-content">
		<textarea name="tipoff-content" class="tipoff-desc js-tipoff-desc" placeholder="写下举报理由"></textarea>
		<div class="tipoff-text"><span class="js-tipoff-text">0</span>/150</div>
	</div>
	<div class="tipoff-btn-box clearfix">
		<div class="r tipoff-submit-btn js-tipoff-submit" data-tipofftype="">提交</div>
		<div class="r tipoff-cancel-btn js-tipoff-close">取消</div>
	</div>
</div>





</div>

<div id="footer" data="wenda,detail">
    <div class="waper">
        <div class="footerwaper clearfix">
            <div class="followus r">
                <a class="followus-favorites" href="javascript:;" title="收藏">
                    <span class="imv2-star1"></span>
                    <div class="favorites-tips">
                        <span class="imv2-star-revert"></span>
                        使用<b> Ctrl+D </b>可将网站添加到书签
                    </div>
                </a>
                <a class="followus-weixin" href="javascript:;" title="微信">
                    <span class="imv2-weixin11"></span>
                    <div class="flw-weixin-box"></div>
                </a>
                <a class="followus-weibo" href="http://weibo.com/u/3306361973"  target="_blank" title="新浪微博">
                    <span class="imv2-weibo11"></span>
                </a>
                <a class="followus-qzone" href="http://user.qzone.qq.com/1059809142/" target="_blank" title="QQ空间">
                    <span class="imv2-qq11"></span>
                </a>
            </div>
            <div class="footer_intro l">
                <div class="footer_link">
                    <ul>
                        <li><a href="//qiye.imooc.com" target="_blank">企业服务</a></li>
                        <li><a href="/index/sitemap.html" target="_blank">网站地图</a></li>
                        <li><a href="//www.imooc.com/" target="_blank">网站首页</a></li>
                        <li><a href="/about/us" target="_blank">关于我们</a></li>
                        <li> <a href="/about/contact" target="_blank">联系我们</a></li>
                        <li> <a href="/seek/masters" target="_blank">讲师招募</a></li>
                        <li> <a href="/help" target="_blank">帮助中心</a></li>
                        <li> <a href="/user/feedback" target="_blank">意见反馈</a></li>
                        <!--<li><a href="http://daxue.imooc.com/" target="_blank">慕课大学</a></li>-->
                        <li><a href="https://git.imooc.com" target="_blank">代码托管</a></li>
                        <!-- <li> <a href="/about/friendly" target="_blank">友情链接</a></li> -->
                       <!--  <li><a href="/corp/index" target="_blank">合作专区</a></li>
                        <li><a href="/about/us" target="_blank">关于我们</a></li> -->
                    </ul>
                </div>
                <p>Copyright © 2025 imooc.com All Rights Reserved | <a rel="nofollow" href="https://beian.miit.gov.cn/" style="color: #93999F;" target="_blank">京ICP备12003892号-11</a> <a rel="nofollow" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802030151" style="color: #93999F;margin:0 5px;" target="_blank"><i class="beian"></i>京公网安备11010802030151号</a></p>
            </div>
        </div>
    </div>
</div>
<div id="J_GotoTop" class="elevator">
    <a href="/user/feedback" class="elevator-msg" target="_blank">
        <i class="icon-feedback"></i>
        <span class="">意见反馈</span>
    </a>
    <a href="//order.imooc.com/pay/sharegoods" class="elevator-dist" style="display: none;" target="_blank">
        <i class=""></i>
        <span class="">分销返利</span>
    </a>
    <!-- <a href="//www.imooc.com/act/invite" class="elevator-dist" target="_blank">
        <i class=""></i>
        <span class="">邀请有奖</span>
    </a> -->
    <a href="/help" class="elevator-faq" target="_blank">
        <i class="icon-ques"></i>
        <span class="">帮助中心</span>
    </a>
    <a href="//www.imooc.com/mobile/app" target="_blank" class="elevator-app" >
        <i class="icon-appdownload"></i>
        <span class="">APP下载</span>
        <div class="elevator-app-box"></div>
    </a>
    <a href="javascript:void(0)" class="elevator-weixin no-goto" id="js-elevator-weixin" >
        <i class="icon-wxgzh"></i>
        <span class="">官方微信</span>
        <div class="elevator-weixin-box"></div>
    </a>
    <a href="javascript:void(0)" class="elevator-top no-goto" style="display:none" id="backTop">
        <i class="icon-up2"></i>
        <span class="">返回顶部</span>
    </a>
</div>


<div id="globalRightFloat"></div>








<script type="text/javascript" charset="utf-8" src="/static/lib/ueditor1.4.3.1/ueditor.final.min.js?v=1.3"></script>
<script src="//moco.imooc.com/captcha/script/captcha.min.js?v=1.0"></script>

<!--script-->
<script type="text/javascript" src="/static/lib/util/error.js"></script>
<script src="/passport/static/scripts/ssologin.js?v=2.0"></script>
<script type="text/javascript" src="/static/sea-modules/seajs/seajs/2.1.1/sea.js"></script>
<script type="text/javascript" src="/static/sea_config.js?v=202501071115"></script>
<script type="text/javascript">seajs.use("/static/page/"+OP_CONFIG.module+"/"+OP_CONFIG.page)</script>

<script type="text/javascript" src="/static/page/common/dist-zhuge.js"></script>

<script type="text/javascript">seajs.use("/static/page/common/advertiseCheck.js");</script>

<script src="//moco.imooc.com/captcha/script/captcha.min.js?v=202501071115"></script>
<script>
    //动态加载advertisementReportjs

    var checkJQ = function(){
        // console.log(typeof jQuery)
       if(typeof jQuery != 'undefined') {
           clearInterval(timer);
           var scr = document.createElement('script');
           scr.type="text/javascript";
           scr.src="/static/page/common/advertisementReport.js";
           document.body.appendChild(scr);

       }
    }
    var timer = setInterval(checkJQ,1000);

</script>







<div style="display: none">
<script type="text/javascript">
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?f0cfcccd7b1393990c78efdeebff3968";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();
(function (d) {
window.bd_cpro_rtid="rHT4P1c";
var s = d.createElement("script");s.type = "text/javascript";s.async = true;s.src = location.protocol + "//cpro.baidu.com/cpro/ui/rt.js";
var s0 = d.getElementsByTagName("script")[0];s0.parentNode.insertBefore(s, s0);
})(document);
</script>
<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
    }else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>
</div>
</body>
</html>