作者GALINE (天真可爱CQD)
看板PHP
标题Re: [请益] 书上写的函式看不懂
时间Wed Nov 30 11:19:16 2016
※ 引述《tingmeow (雪炉喵)》之铭言:
: ---------------------------------------------------------------
: function die_content($content=""){
: $main = "
: <!DOCTYPE html>
: .....中间一堆html
: </html>";
: die($main);
: }
: 作者的话:在写到第13行的时候需要一个函数,让系统可以中断程式并输
: 出错误的讯息,因为资料库的连线若是失数的话,程式码再继续也是无意义
: 的,这时候要设计让程式码中断也就是自订函数 die_content()的设计。
: ---------------------------------------------------------------
: 想请教大家像这个函式 在使用上是怎麽用的呢?
他的意义是
「有错误的时候呼叫这个 function,可以印出漂漂亮亮的错误讯息
而且程式不会继续执行下去而不会跑到不该跑的地方」
原本的 die() 是「印讯息然後程式不会继续执行下去」
他这个 function 多了「让讯息漂漂亮亮」这段
如果继续执行下去,那就变成「啊资料库就烂了你还要印画面,印开心的吗」...
---------------------------------------
这样的用法做为练习或是写小东西没啥问题
但以实际工作在用或是写比较大的程式,这不算好的做法
理由有几个
- 通常把 html 跟 php 逻辑混在一起是坏事情
- 这年头习惯用专门的样版引擎做这件事,例如 smarty 或 twig 或 blade
- 也有人用单独一只 PHP 档案做这件事
- 这部分请参照「MVC」的V,如果你的书有写到这段的话
- 给老手:我因为这样讨厌隔壁棚最近很红的 React 的 JSX :/
- 这样程式流程可能跑到一半就中断掉,很难掌握程式的流程
- 这年头常用「Exception + try/catch」之类的做法
- 不过有些天元强者很讨厌 try catch XD
- 要做统一的错误处理机制会绑手绑脚
- 像是有些网站烂掉的时候会显示一个还算漂亮的错误页面
- 不是不能做但是会碰到一些麻烦问题...
对新手来说把这几点当成「老手经验谈」就好
要详细解释的话书可以写个一章了...
这些点对於小程式都不重要,小程式或是练习太顾虑这些反而会把事情搞麻烦
把这些先跟老佛爷一起放在心里就好
---------------------------------------------------
如果你是在工作,或是你在写真的要拿给人家用的程式
这样的做法在五六年前是正规作法,在现在算是偷工减料...
PHP 在最近几年经历了相当剧烈的现代化改造工程
五六年前的正规做法在最近几年会被很多新人类(?)唾弃
http://www.books.com.tw/products/0010688181
关於 PHP 的现代化工程,这本书写得满好的,只是新手应该啃不太动
你把你手上的书的练习都做完都搞懂之後,可以来看这本
: 我看它输出html是放在function,这算是物件导向的写法吗?
这件事情跟「物件」没关系
物件是「东西里面又包了一堆东西,被包的可以是一般的变数也可以是 function」
// 范例一
$obj = new stdClass(); // 做出「一包」东西,虽然这包现在是空的
$obj->name = "可爱小女孩"; // 现在这个物件里面有个东西叫 name
// 内容是「可爱小女孩」这个字串
echo $obj->name; // 印出「可爱小女孩」
// 范例二
$e = new Exception("我坏掉了"); // 做出一包「Exception」这种东西
// 这东西实际上的用途先别管
// 现在只是借来用而已
echo $e->getMessage(); // 会印出「我坏掉了」四个字
echo "<br>\n==========<br>\n"; // 不重要只是个分隔线
echo $e->getTraceAsString(); // 会印出一堆乱七八糟东西
// 虽然不知道为什麽,但里面写了你的 code
// 是哪个档案的哪一行
物件远远不只是这样,但一开始把他当这样就好
「把东西东西包起来让大家好做事,或是用人家包好的一包东西」
「我不需要知道为什麽,但是人家包好的东西会动」
「我用人家包好的东西可以少写很多 code」
这几件事才是物件导向
这整串事情跟印出 HTML 没有关系
实际上这段 code 看起来很不物件导向...
: 我之前没看过function里的参数是指派类的
: ($content="") 像这样在使用上的时候是怎麽使用呢
: 参数会被放进去""里面吗
这个写法的意思是「没有填的话,把 $content 当成 ""」
die_content(); // $content 会是 ""
die_content("可爱小女孩"); // $content 会是 "可爱小女孩"
die_content("有人弄坏我的资料库"); // $content 会是...你懂的
--
将各种精密的仪器,装置在他的体内,然後再注射特殊的动物激素,跟着经过电光的感应
这个人便产生了一股火不能融、水不能淹、电不能击、雷不能毁的巨大力量
雷马,你现在已经具有超人的力量,对任何物体无坚不摧,而且能眼见千里,耳听八方
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.122.206
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1480475959.A.ED4.html
1F:推 secondDim: 推 现代PHP这本书 11/30 11:42
2F:推 hmj1026: 推现代PHP这本书,不过我感觉原PO应该也看不懂这篇 11/30 14:18
3F:→ hmj1026: 可能原PO要先懂function的结构,陈述句、引数参数..等等 11/30 14:20
※ 编辑: GALINE (60.248.122.206), 11/30/2016 14:58:50
4F:推 adsl9527: 好详细的说明 11/30 15:06
5F:→ MOONRAKER: 坏掉了 11/30 16:05
6F:→ Neisseria: 推 现代 PHP 这本书 11/30 16:25
7F:推 blakechiang: 推详细说明 11/30 21:04
8F:推 locklose: 推 12/01 16:56
9F:推 menshuei: 现代php对新手颇难了解的,至少对我而言是如此,一般的p 12/01 20:28
10F:→ menshuei: hp书籍,有html跟css的概念了解很快,实作也很容易上手 12/01 20:28
11F:→ menshuei: ,但现代php很明显的不是一步步组成,而是很多零散的组 12/01 20:28
12F:→ menshuei: 成,个人多少有点雾里看花,还不知如何凑成一个可用的东 12/01 20:28
13F:→ menshuei: 西。 12/01 20:28
14F:→ tkdmaf: 在看现代php之前要先看php物件导向设计模式。 12/01 20:45
15F:→ GALINE: 我一下还真想不到什麽从 PHP 出发讲物件导向的好书 12/02 11:59