PHP开发:从程序化到面向对象编程(3)

来源:未知 浏览 631次 时间 2021-03-15 20:29

PHP

大师不妨将现有代码与附件中的代码成品进行比较,开拓瞅瞅二者有何不共之处。没错,:咱们并不将$client办法参数传播,从而是在十脚函数中运用global $client并将其办法......

大师不妨将现有代码与附件中的代码成品进行比较,步调化瞅瞅二者有何不共之处。没错,到咱们并不将$client办法参数传播,面向而是在十脚函数中运用global $client并将其办法只传播向谷歌API函数的参数。从本领角度瞅,闭于象固然是谷歌API函数也不妨运用来自理想的$client变量,编程然而尔认为最佳依然纵然保护API的独力性。

}  

date('Y-m-d H:m', strtotime($event['created'])) .  

function printEventDetails() {  

if ($event['id'] == $_GET['showThisEvent']) {  

return;  

Fatal error: Call to undefined method Presenter::printCalendars()  

}  

}  

经过闭于index.php的一些小小安置、让Presenter包括本有display措施、Logic包括本有交易逻辑函数、Router包括本有动作采用符,(咱们已经不妨让本人的代码平凡是运行并具备“Home”菜单元素。

class Logic {  

'&calendarId=' . htmlentities($_GET['showThisCalendar']), $event['summary']);  

foreach (retrieveEvents($_GET['calendarId']) as $event)  

$client = createClient();  

排除过长的if-else证明

}  

if(!authenticate($client)) return;  

依托性领会

}  

本教程附戴的示例代码中包括谷歌PHP API客户端代码,3提倡大师便运用这一套以保护十脚进建过程与文章证明保护普遍。其他,)假如大师想考查自行安置,PHP请点挨此处察瞅官方证明文档。

}  

putTitle('These are your calendars:');  

尚且处毕竟脚完成了。天然,开拓咱们的安置决定还有许多矫正的空间。咱们可认为Logic类中的措施编写一些试验过程,:大概Logic类本人也不妨换个更有代表性的称呼,从比方GoogleCalendarGateway。咱们还不妨创造Event与Calendar类,步调化从而更好地控制相闭数据及动作,到共时将Presenter的依托闭系依据数据典范拆分为数组。另一项矫正与夸大筹备则是创造多态性动作类,面向用于代替直接经过$_GET调用函数。总而言之,闭于象闭于于这一典范的矫正堪称无穷无尽,编程有风趣的共伴不妨考查将本人的构想变革为本质。尔在附件的GoogleCalObjectOrientedFinal文件夹中保护有代码的结果版本,(大师不妨以此为发端进行摸索。

function __construct() {  

putLink('?showCalendars', 'Show Calendars');  

(new Presenter())->putMenu();  

$client变量被传播到咱们的十脚函数核心。它须要与谷歌API贯穿,3然而这方面本质咱们稍后再谈。

}  

这份教程的出身源自一年多之前Robert C.Martin在汇报中戴给尔的开辟。其时他的汇报核心在于筹备创造“结果编程谈话”的大概性。在过程中,)他提出了如许几个问题:为什么会存留“结果编程谈话”?如许的谈话应具备哪些个性?然而跟着他的道授,PHP尔从中创造另一种风趣的思绪:每种编程范式都在无形中给步伐员戴来诸多无法遏止的节制性。为了本本溯源,开拓尔挨算在正式介入PHP由步伐化向面向闭于象变革这一话题之前,:先与大师分割一些表面知识。

基于这种措施,从咱们天才的菜单将如下所示:

print('<br>');  

在这套预备中,步调化咱们只求截止能按预期灵验。咱们的代码大概会显得有些粗糙,到而且个中只波及以下几个文件:

}  

}  

某些函数的效力特殊透彻——只用于在屏幕上输出信息,面向然而有些函数则用于估计触发前提,闭于象更有些函数身兼二种效力。面对于于这种情境,编程咱们常常最佳把这些存留特别用途的函数放在属于本人的文件核心。咱们发端建理只用于屏幕信息输出的函数,(并将其变革到functions_display.php文件核心。几乎搞法如下所示:

function printEventDetails() {  

}  

尚且代码建理处事还剩下截止一步,3也等于存留于doUserAction()函数中的过长if-else证明,)其效力是决定每项动作的本质处置措施。在元编程方面(经过引用来调用函数),PHPPHP具备相当卓越的精致性。这种个性使咱们不妨将$_GET变量的值与函数称呼通联起来。如许一来,开拓咱们不妨在$_GET变量中引入径直的action参数,:并将该值办法函数称呼。

• functions.php – 十脚精巧在此爆发。

function printCalendars() {  

$this->putCalendarTitle();  

print('<br><br>');  

如大师所睹,从经过沉新建理之后,步调化代码已经展示露面向闭于象式安置的个性。虽然尚且咱们还不领会其面向的是何种闭于象、会实行哪些简直动作,到然而其个性已经初露朕兆。

class Presenter {  

(new Router())->doUserAction();  

尚且,面向本本共时存留于Logic与Presenter二个类中的putHome()函数将从Logic中消逝。这一场合证明咱们已经发端进行反复数据排除处事。指向Presenter的构造函数与引用也从Logic中消逝了。另一方面,PHP开拓:从步调化到面向闭于象编程(3)由构造函数所创造的Logic闭于象则必定被写入Presenter。

global $client;  

function printEventDetails() {  

}  

共7页:

上一页

1

2

标签: 函数代码咱们不妨