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

来源:未知 浏览 608次 时间 2021-03-15 20:36

PHP

这份教程的出身源自一年多之前Robert C.Martin在汇报中戴给尔的开辟。其时他的汇报核心在于筹备创造结果编程谈话的大概性。在过程中,开拓他提出了如许几个问题:为什......

$this->businessLogic->getEventById(  

foreach (retrieveEvents($client, $_GET['showThisCalendar']) as $event) {  

[...]  

大概来说,:这展现着几乎实行应依托于抽象类。类越趋近抽象,从它们便越阻碍易爆发变革。因此咱们不妨如许领会:变幻常常的类应依托于其他更为宁静的类。所以十脚运用中最不宁静的局部很大概是用户界面,步调化这在咱们的运用示例中经过Presenter类来实行。让咱们再来透彻一下依托反常过程。

return;  

这个例子恐怕要算咱们这次编写的代码中最为搀和的函数。它所调用的是名为putTitle()的协帮函数,到其效力是将某些经过办法安置的HTML输出以充任标题。标题中将包括咱们日程表的本质称呼,面向这是经过调用来自functions_google_api.php文件中的getCalendar()函数来实行的。返回的日历信息是一个数组,闭于象个中包括一个summary字段,编程而这正是咱们要找的本质。

print('<br>');  

$this->businessLogic = new Logic();  

private $presenter;  

接下来,PHP咱们将运用Presenter中的printCalendarContents()措施,开拓如下所示:

然而不过废除函数指针还远远不及。面向闭于象的编程机制必定戴来代替预备,:毕竟也简直如许,从它包括着多态个性与一套大概语法。核心来了,步调化多态性正是面向闭于象编程的核心价格,到即:控制流与源代码在依托闭系上凑巧分别。

血色线条则引入了实脚不共的观念,面向它们代表着发端的源代码依托闭系。之所以说“发端”,闭于象是因为跟着运用的运行其指向将变得愈发搀和、难以把握。putMenu()措施中包括着被特定闭系所调用的函数的称呼。这是一种依托闭系,编程共时也是实用于十脚其他闭系创造措施的前提规则。它们的几乎闭系取决于其他函数的动作。

global $client;  

return getEventList($client, htmlspecialchars($_GET['showThisCalendar']))['items'];  

require_once __DIR__ . '/../apiAccess.php';  

摆脱理想变量

谷歌博门针闭于PHP供给一套API客户端,PHP咱们将运用它与本人的谷歌账户进行闭于接,开拓从而闭于日程表效力加以安置。要想让代码透彻起效,:大师须要经过设定让本人的谷歌账户接收来自日程表的审讯。

putMenu();  

• functions_google_api.php – 包办十脚火线提到的谷歌API。

$client = createClient();  

return;  

function printCalendarContents($client) {  

试手负担

[...]  

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

global $client;  

print('<div display="block">'.$text.'</div>');  

}  

function printMenu() {  

闭于于尚且代码咱们不妨画制出一份闭系图,从本质如下所示。经过这幅闭系图,步调化咱们不妨瞅到运用步伐运行过程的前几个措施。天然,到把整套过程都画下来便过度搀和了。

}  

$this->putCalendarListElement($calendar);  

function isCurrentEvent($event) {  

}  

尚且博心漏网的湮没安置缺点便只剩下$client理想变量了。运用步伐中的十脚代码城市闭于其进行参瞅,面向然而与之爆创造显闭于比的是,闭于象几乎有须要参瞅$client的惟有Logic类一个。最直瞅的处置措施决定是使其变幻为博用类变量,编程然而如许一来咱们便须要将$client经过Router传播至Presenter处,PHP从而使presenter不妨运用$client变幻创造出Logic闭于象——这闭于于处置问题明显无甚效力。咱们的安置初志是在独力情景下树立类,开拓并透彻为其调配依托闭系。

putBlock('This event has status ' . $event['status']);  

foreach ($this->businessLogic->getEventsForCalendar() as $event) {  

以上变幻完成之后,:点挨Show Calendars,从屏幕上会展示缺点公布。因为咱们链接里面的十脚动作都指向Logic类中的函数称呼,步调化因此必定经过更多普遍性安置来往复二者之间的依托闭系。底下咱们闭于措施进行逐个建改,到先来瞅第一条缺点信息:

回复源代码依托闭系

}  

范式节制

}  

$_GET['showThisEvent'],  

}  

require_once './Presenter.php';  

B:抽象不应依托于细节,面向细节应依托于抽象。

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

假如要为尚且的代码画制依托闭系类图,闭于象则应如下所示:

putLink('?action=printCalendars', 'Show Calendars');  

function foo() {  

function doUserAction() {  

$function();        // Goes into foo()  

require_once './google-api-php-client/src/Google_Client.php';  

if(!authenticate($client)) return;  

$eventsForCalendar = $this->businessLogic->getEventsForCalendar(htmlspecialchars($_GET['showThisCalendar']));  

}  

foreach (getCalendarList($client)['items'] as $calendar) {  

}  

' and last updated at ' .  

function putTitle($text) {  

global $client;  

固然该措施只控制暴露信息,编程然而其功效仍需在闭于$event构造特殊领会的前提下方能实行。然而闭于于咱们的大概实例来说,PHP这已经脚够了。闭于于其他措施,开拓大师不妨经过犹如的措施进行分别。

此地有一项名为doUserAction()的函数,:它的灵验与否取决于一条很长的if-else证明;其他方规则依据GET变量中的参数决定调用情境。这些措施顿时运用API与谷歌日程表闭于接,从并在屏幕上表展示咱们须要的十脚截止。

putTitle('Details for event: '. $event['summary']);  

咱们尚且的代码实脚没问题,步调化然而尔想咱们不妨经过安置使其以更符合的措施构造起来。大师大概已经从附戴的源代码中创造,到该花样十脚已经构造完成的代码都被定名为“GoogleCalProceduralOrganized”。

因此咱们须要保护惟有Presenter感知到这一情境,面向将要以上二个措施变幻为下列本质:

闭于于十脚宏大类构造,闭于象咱们都倾向于运用Factories;然而在本文的小小典范中,编程index.php文件已经脚以包括逻辑创造确。办法运用步伐的进口点,PHP这个犹如于高层体系构造中“main”的文件保持处于交易逻辑的范畴之外。

A:高层模块不应依托于矮级模块,开拓二者都应依托于抽象。

$this->putEvent(  

function printCalendarContents() {  

function getEventById($eventId, $calendarId) {  

等于如许,:咱们已经成功完成了依托反常。

function putHome() {  

每种编程范式都控制了咱们将构想变革为本质的本领。这些范式去掉了一局部可行预备,从却纳入另一些预备办法代替,步调化然而这十脚都是为了实行共样的展示效验。模块化编程令步伐范畴受到牵制,到制留步伐员只能在闭于应模块范畴之内实行拳脚,面向且每个模块截止都要以“go-to”来指向其他模块。这种设定直接效力了步伐成品的范畴。其他,闭于象构造化编程与步伐化编程措施去掉了“go-to”证明,编程从而控制了步伐员闭于序列、采用以及迭代语句的安置本领。序列属于变量赋值,PHP采用属于if-else估计,开拓而迭代则属于do-while轮回。这些已经成为当下编程谈话与范式的树立基石。

putLink('?home', 'Home');  

}  

其他局部代码与咱们之前筹备过的本质临近,:以致更容易领会。大师不妨抱着轻快的情绪随便瞅瞅,PHP开拓:从步调化到面向闭于象编程尔后冲动精力进军下一章。

}  

共7页:

2

3

标签: 咱们编程闭于gt