成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

iOS程序猿如何快速掌握 PHP,化身"全棧攻城獅"?

Chiclaim / 775人閱讀

摘要:此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組,或列表向量,散列表是映射的一種實(shí)現(xiàn),字典,集合,棧,隊(duì)列以及更多可能性。由于數(shù)組元素的值也可以是另一個(gè)數(shù)組,樹形結(jié)構(gòu)和多維數(shù)組也是允許的。

這是一篇以 iOS 開發(fā)人員的視角寫給廣大iOS 程序猿的 PHP 入門指南.在這篇文章里我努力去發(fā)掘 objectiv-c 與 php 之間的共性,來幫助有一定 iOS 開發(fā)經(jīng)驗(yàn)的攻城獅來快速上手一門后臺(tái)開發(fā)語言.后臺(tái)開發(fā)語言,就是以"數(shù)據(jù)接口"的形式出現(xiàn)在我們的開發(fā)文檔的那個(gè)東西!掌握PHP,無論對(duì)自己目前的iOS開發(fā)工作還是以后個(gè)人職場(chǎng)生涯的長(zhǎng)久發(fā)展,都會(huì)大有裨益!最重要的是,PHP本身不是一個(gè)玩具語言,而是目前相當(dāng)一部分公司仍然在用的后臺(tái)開發(fā)語言,甚至包括你目前的公司;這篇文章,也不是一個(gè)簡(jiǎn)單的基礎(chǔ)手冊(cè),而是以一種更適合 iOS 開發(fā)人員理解的方式來系統(tǒng)講解 PHP 中最核心最重要最常用的概念和功能.閱讀并有效實(shí)踐本文,將有助于你擁有獨(dú)立編寫后臺(tái)數(shù)據(jù)接口的能力.

必要的準(zhǔn)備與說明

首先,你需要下載最新版 XAMPP軟件,以在本地搭建一個(gè) php 服務(wù)器.下載地址: https://www.apachefriends.org/download.html.

下載完成后,雙擊安裝.安裝成功后,選擇 Mange Servers-->Start All啟動(dòng)本地服務(wù)器.啟動(dòng)成功后,在瀏覽器中輸入 http://localhost,就可以看到一個(gè)默認(rèn)的PHP頁面.

你的php服務(wù)器文件默認(rèn)放在: 應(yīng)用程序-->XAMPP-->htdocs 目錄下.

然后你還需要下載一款PHP編輯器,此時(shí)我使用Github的Atom編輯器.個(gè)人感覺界面很舒適,代碼高亮看著也很舒服,你可以到這里下載: https://atom.io.下載完成后,點(diǎn)擊安裝即可.

最后要說明的是:PHP版本很多,下面的講解支持目前最常用的 php 5.3.0 及其以上版本.

Hello World!

下面編寫最簡(jiǎn)單的 Hello World 程序,請(qǐng)?jiān)谝韵虏襟E執(zhí)行.

1.在 應(yīng)用程序-->XAMPP-->htdocs 目錄下新建目錄 find_php.

沒有特別的意思,純碎是為了演示方便,同時(shí)不干擾默認(rèn)存在的php文件.

2.打開Atom編輯器,使用 cmd+N 新建文件,并輸入以下代碼,并 cmd+S 保存到 find_php目錄,文件命名為 index.php.

如果PHP無法如中一樣高亮顯示,可能就需要點(diǎn)擊文件右下角,以手動(dòng)指定當(dāng)前問文件的語法高亮方式.

3.在瀏覽器地址欄輸入: http://localhost/find_php/index.php,即可看到用PHP寫的Hello World.

AppDelegate 入口文件

iOS應(yīng)用通常是以 AppDelegate 文件作為編碼的起始(準(zhǔn)確說的是 main.m,在此不細(xì)究).在PHP中,你可以使用一個(gè) index.php 文件作為你的 php 程序的唯一入口.你的所有的php頁面間的訪問與跳轉(zhuǎn),都將是由此處開始.下面的代碼可以先先復(fù)制到你的 index.php種,它實(shí)現(xiàn)了一個(gè)基本的頁面訪問與控制的框架:

";

echo "數(shù)據(jù)模型:
"; foreach ($model as $key => $value) { echo $key.":".$value."
"; } ?>

然后在瀏覽器地址欄,輸入: http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25
頁面輸入:

控制器:HomeViewController
數(shù)據(jù)模型:
id:42
name:iOS122
age:25

viewController=后面跟的是你你的表示你的視圖控制器, model是一個(gè)字典,用于存儲(chǔ)數(shù)據(jù)模型,支持輸入多個(gè)鍵值對(duì).id,name,age等都是自定義的鍵,用于表示你想要傳給新頁面的數(shù)據(jù),如果沒有可以不寫.

注意: 此處暫僅考慮簡(jiǎn)單的GET請(qǐng)求,至于其他變體可在熟悉PHP語法后,自行書寫.學(xué)習(xí)新語言的初期,努力尋找新東西與已經(jīng)掌握的東西的共通之處,總是可以事半功倍!

MVC 設(shè)計(jì)模式

我們?nèi)匀粡某S玫腗VC模式來開始更進(jìn)一步的討論.M,即Model數(shù)據(jù)模型,對(duì)應(yīng)于我們?cè)诘刂窓谳斎氲膍odel;V,即視圖View,更直接地說是顯示數(shù)據(jù),為了簡(jiǎn)化討論,我們此處僅對(duì)移動(dòng)端開發(fā)常用的JSON格式數(shù)據(jù)的顯示作一實(shí)現(xiàn);C,即Controller控制器,也就是我們常說的視圖控制器,下面會(huì)具體討論如何在PHP中定義視圖控制器.

注意: 移動(dòng)端數(shù)據(jù)接口只是PHP的應(yīng)用場(chǎng)景之一.其實(shí)你日常接觸的絕對(duì)部分網(wǎng)站都是由 PHP 驅(qū)動(dòng)的,要想寫出布局優(yōu)美的網(wǎng)站,你需要學(xué)習(xí)HTML和JS相關(guān)的知識(shí).如果有興趣,建議去這個(gè)網(wǎng)站: http://www.w3school.com.cn

改進(jìn)后的 index.php
model = $model;
  $controller->show();
}
?>

這個(gè)方法可以實(shí)現(xiàn)根據(jù)用戶輸入自動(dòng)跳轉(zhuǎn)至對(duì)應(yīng)的界面.你直接把代碼復(fù)制到index.php中即可,因?yàn)樗鼤簳r(shí)不再需要做變更了.一些說明的技術(shù)點(diǎn)是:

實(shí)現(xiàn)了 魔術(shù)方法 __autoload,以實(shí)現(xiàn)自動(dòng)加載相關(guān)的類文件.這有些類似于我們?cè)?.pch中全局引入某個(gè)頭文件,然后整個(gè)工程處處可用一樣.

php 是一種弱類型語言,你定義變量時(shí)不必聲明類型,但是變量要以 美元符號(hào) $開頭.

php 使用 new 函數(shù)來創(chuàng)建一個(gè)對(duì)象,語法是 new 類名(),這不禁讓我想起 oc 中的 new函數(shù),它的語法是: [類名 new];

php 中的函數(shù),看起來更像是C語言函數(shù),也許說更像 oc 中的block,可能更好理解些.

php 訪問屬性,使用的是 ->,而不是 .;另一種 php 訪問屬性的方式是使用 obj["屬性名"],如$controller["model"].

此時(shí)你訪問 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,應(yīng)該會(huì)報(bào)錯(cuò):

syntax error, unexpected ">" in /Applications/XAMPP/xamppfiles/htdocs/find_php/HomeViewController.php on line 38

因?yàn)槟氵€沒有定義視圖控制器!

Controller:定義視圖控制器

在find_php文件夾新建 HomeViewController.php 文件,并把下面的代碼復(fù)制進(jìn)去:

` 而不是 `.` */
    $this->model = $model;
  }

  /*
  析構(gòu)函數(shù),作用和 oc 中的dealloc很像.
  */
  public function __destruct()
  {
    $this->model = NULL;
  }

  /* 獲取內(nèi)容,用于輸出顯示. */
  protected function getContent()
  {
     /* 默認(rèn)把用戶輸入以JSON格式返回 */
     $content = json_encode($this->model);

     return $content;
  }

  /*
  定義實(shí)例方法:show;
  定義方法使用的是關(guān)鍵字 function,且無法指定返回值,這點(diǎn)不如 oc 方便;
   */
  public function show()
  {
    /* 使用$this關(guān)鍵字來調(diào)用另一個(gè)實(shí)例方法. */
   $content = $this->getContent();

   echo $content;
  }
}

此時(shí)你訪問 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,輸出應(yīng)該是:

{"id":"42","name":"iOS122","age":"25"}

說明,頁面的確跳轉(zhuǎn)到了 HomeViewController控制器,并有效輸出;而且輸出的是我們移動(dòng)端開發(fā)最常接觸的 json 格式的數(shù)據(jù).

以上的代碼,充分展示了php作為一門面向?qū)ο?OOP)語言最常用的幾個(gè)功能,如定義屬性,定義實(shí)例方法,在示例方法內(nèi)訪問屬性與實(shí)例方法等.PHP作為一門弱類型的OOP語言,也有一些非常強(qiáng)大的特性,推薦閱讀:

重載

魔術(shù)方法

后期靜態(tài)綁定

Model: 關(guān)于數(shù)據(jù)模型的幾點(diǎn)說明.

網(wǎng)上關(guān)于MVC中M的討論,此處我選取的是最基本的一種: M專指用于存儲(chǔ)某種數(shù)據(jù)的類的實(shí)例.它可以用于數(shù)據(jù)的格式化存儲(chǔ)和傳遞,但不應(yīng)包含發(fā)起網(wǎng)絡(luò)請(qǐng)求和讀寫數(shù)據(jù)庫等操作;

在本文討論的Model中,我們進(jìn)一步簡(jiǎn)化了Model,允許且只允許用于通過URL來定義某個(gè)控制器的Model;

PHP 是一本弱類型的語言,所以不必專門為某種控制器指定某種類型的Model.

"PHP 中的數(shù)組實(shí)際上是一個(gè)有序映射。映射是一種把 values 關(guān)聯(lián)到 keys 的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組,或列表(向量),散列表(是映射的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。由于數(shù)組元素的值也可以是另一個(gè)數(shù)組,樹形結(jié)構(gòu)和多維數(shù)組也是允許的。"

View: 一個(gè)顯示HTML的實(shí)例.

返回 JSON 格式的數(shù)據(jù),已經(jīng)達(dá)到了做移動(dòng)端開發(fā)的需要,但此處仍然使用HTML語法來顯示數(shù)據(jù),以便于更好地理解.用下面的代碼替換 HomeViewController.php 文件的 getContent 方法:

  /* 獲取內(nèi)容,用于輸出顯示. */
  protected function getContent()
  {
    $content = "
    "; foreach ($this->model as $key => $value) { $content .= "
  • $key:$value
  • "; } $content .= "
"; return $content; }

此時(shí)你訪問 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,輸出應(yīng)該是:

id:42

name:iOS122

age:25

瀏覽器中會(huì)被自動(dòng)解析為一個(gè)列表.對(duì)應(yīng)的HTML代碼如下:




  • id:42
  • name:iOS122
  • age:25

此處使用了簡(jiǎn)單的HTML標(biāo)簽.

小結(jié)

本文通過模擬實(shí)現(xiàn) iOS 的MVC的設(shè)計(jì)模式,來概要性地講解了PHP中的對(duì)應(yīng)的各個(gè)概念.熟悉以上操作,可以使你具備自定義服務(wù)器接口的基本能力.參與討論,參見:http://www.ios122.com/tag/php/ 更全面地信息,參見PHP官方中文文檔: http://ua2.php.net/manual/zh/langref.php.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21142.html

相關(guān)文章

  • 采用React+Ant Design組件化開發(fā)前端界面(一)

    摘要:基礎(chǔ)知識(shí)使用腳手架創(chuàng)建項(xiàng)目并啟動(dòng)安裝腳手架使用腳手架創(chuàng)建項(xiàng)目為項(xiàng)目名。否則可能導(dǎo)致項(xiàng)目發(fā)布上線后,報(bào)錯(cuò)無法執(zhí)行。安裝測(cè)試使用注意默認(rèn)情況下安裝的需要引入才會(huì)生效樣式,但很多時(shí)候,我們只是使用了部分組件,引入整個(gè)樣式文件,有些得不償失。 showImg(http://upload-images.jianshu.io/upload_images/2774022-8d65190f1b972c...

    cppprimer 評(píng)論0 收藏0
  • 【Copy城獅日志】"Error: if there's nested dat

    摘要:工作日,每天起床機(jī)械地去上班,周末,每天優(yōu)哉游哉,好像一個(gè)木偶,被生活蹂躪的木偶,意識(shí)以外的力量在操縱著的木偶。支持子節(jié)點(diǎn)數(shù)據(jù)異步加載。當(dāng)然,官方將提供更改鍵值的。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Created by huqi at 2019-5-18 10:32:30 Updated by huqi at 2019-5-18 12:32:23 showImg(http...

    褰辯話 評(píng)論0 收藏0
  • 云計(jì)算,加速程序城獅開發(fā)流程

    摘要:而令人關(guān)注的是,將云計(jì)算技術(shù)整合到業(yè)務(wù)的開發(fā)工作流程中可以顯著提高生產(chǎn)力。模擬開發(fā)人員也可以檢查其程序在不同平臺(tái)上的運(yùn)行方式,如果這是特定開發(fā)工作中的一個(gè)問題。通過采用云計(jì)算可提高生產(chǎn)力,開發(fā)人員將獲得很多益處。如今,現(xiàn)代軟件的開發(fā)在硬件和軟件資源方面的要求是非常苛刻的,而很多程序人員只是為了編寫代碼而投購(gòu)買高端機(jī)器的情況并不少見。實(shí)際上,這樣的處理和投入是值得的,但更重要的是,這些人可能會(huì)...

    crelaber 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<