これは、iOS 開発者の視点から iOS プログラマのために書かれた PHP の入門ガイドです。この記事では、特定の iOS 開発経験を持つ人を助けるために、objectiv-c と php の共通点を探ろうとします。 Siege Lion はこちらです。バックエンド開発言語をすぐに始めるには、バックエンド開発言語が「データ インターフェイス」の形で開発ドキュメントに表示されます。PHP をマスターすることは、現在の iOS 開発作業と将来の個人的なキャリアの両方に役立ちます。最も重要なことは、PHP 自体がおもちゃの言語ではなく、現在の会社を含め、依然として多くの企業で使用されているバックエンド開発言語であるということです。 ; この記事は単純な基本マニュアルではありませんが、iOS 開発者が理解しやすいように、PHP の中心となる最も重要で一般的に使用される概念と機能を体系的に説明しています。バックグラウンド データを独自に書き込む機能を備えています。 インターフェイス機能。
まず、XAMPP ソフトウェアの最新バージョンをダウンロードして、ローカルに PHP サーバーを構築する必要があります。 ダウンロード アドレス: https://www .apachefriends.org/download.html
ダウンロードが完了したら、ダブルクリックしてインストールし、[サーバーの管理]-->[すべて開始]を選択して、起動が成功したら、次のように入力します。ブラウザで http://localhost にアクセスすると、デフォルトの PHP ページが表示されます。
php サーバー ファイルは、デフォルトで次の場所に配置されます: Application-->XAMPP-->htdocs ディレクトリ。
その後、ダウンロードする必要もあります現時点では、Github の Atom エディターを使用しています。個人的には、インターフェイスが非常に快適で、コードの強調表示も非常に快適だと感じています。https://atom.io からダウンロードできます。ダウンロードが完了したら、クリックしてインストールします。
最後に注意してください: PHP には多くのバージョンがあり、最も一般的に使用される PHP 5.3.0 以降のバージョンがサポートされています。以下の最も簡単な Hello World プログラムを作成します。以下の手順に従ってください。
特別な意味はありません。単にデモの便宜のためであり、デフォルトの既存の php ファイルには影響しません
<?phpecho 'Hello World';?>
<?php$controller = '';$model = array();if (isset($_GET['viewController'])) { $controller = $_GET['viewController'];}if (isset($_GET['model'])) { $model = $_GET['model'];}echo '控制器:'.$controller.'<br />';echo '数据模型:<br />';foreach ($model as $key => $value) { echo $key.':'.$value.'<br />';}?>
控制器:HomeViewController数据模型:id:42name:iOS122age:25
viewController= に続いて、これはビュー コントローラーの表現です モデルは辞書です。データ モデルを保存するために使用され、複数のキーと値のペアの入力をサポートします。ID、名前、年齢などはすべて、新しいページにデータがないことを示すために使用されるカスタム キーです。
注: ここでは単純な GET リクエストのみを考慮します。他のバリエーションについては、新しい言語を学習する初期段階では、新しいものを見つけるようにしてください。すでに習得したものと共通しており、半分の労力で常に 2 倍の結果を得ることができます。
引き続き、一般的に使用される MVC パターン、つまりモデル データ モデルから始めます。アドレス バー モデルに入力した内容に対応します。V は、より直接的にデータを表示します。ここでは、説明を簡略化するために、モバイル端末開発で一般的に使用される JSON 形式のデータの表示のみを実装します。コントローラーは、ビュー コントローラーと呼ばれることがよくあります。以下では、PHP でビュー コントローラーを定義する方法について詳しく説明します。あなたが毎日アクセスする Web サイトは PHP によって動かされています。美しくレイアウトされた Web サイトを作成するには、HTML と JS 関連の知識を学ぶ必要があります。興味がある場合は、次の Web サイトにアクセスすることをお勧めします。 ://www.w3school.com.cn
改善されたindex.php
<?php // index.php/* 实现类文件的自动加载 */function __autoload($className) { if (file_exists($className . '.php')) { require_once $className . '.php'; return true; } return false; }// --------------------------------/* 获取用户想要访问的页面的相关信息. */$controllerName = '';$model = array();if (isset($_GET['viewController'])) { $controllerName = $_GET['viewController'];}if (isset($_GET['model'])) { $model = $_GET['model'];}/* 跳转到指定页面. */if ('' !== $controllerName) { /* 我们约定每个控制器都至少有一个$model属性和 show方法 */ $controller = new $controllerName(); $controller->model = $model; $controller->show();}?>
関連するクラス ファイルを自動的にロードするためにマジック メソッド __autoload が実装されています。これは、特定のヘッダー ファイルを .pch でグローバルに導入する方法と似ています。プロジェクト全体はどこでも利用可能です
php は弱い型指定の言語です。変数を定義するときに型を宣言する必要はありませんが、変数はドル記号 $.
で始まる必要があります。php 使用 new 函数来创建一个对象,语法是 new 类名(),这不禁让我想起 oc 中的 new函数,它的语法是: [类名 new];
php 中的函数,看起来更像是C语言函数,也许说更像 oc 中的block,可能更好理解些.
php 访问属性,使用的是 ->,而不是 .;另一种 php 访问属性的方式是使用 obj['属性名'],如$controller['model'].
此时你访问 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,应该会报错:
syntax error, unexpected '>' in /Applications/XAMPP/xamppfiles/htdocs/find_php/HomeViewController.php on line 38
因为你还没有定义视图控制器
在find_php文件夹新建 HomeViewController.php 文件,并把下面的代码复制进去:
<?php // HomeViewController.php/* 建议一个文件中只有一个 与文件同名的类.如果需要继承自其他类,可以使用关键字 extends,如 */class HomeViewController{ /* 定义属性,允许定义时,给属性一个默认值,这一点比OC灵活. public 关键字用于指定外部可访问; 类似的还有 private(仅允许内部访问),protected(仅允许自身及其子类访问); 属性前必须有关键字 public/private/protected 中的一个. */ public $model = array(); // 定义允许外部访问的属性. /* 构造函数,相当于init初始化方法; 当调用New 函数新建对象时,此方法会被自动调用; array 指明参数类型, $model是实参, $model = array(),用于指定默认参数; 指定了默认参数的参数,在调用时,可以不传; public 关键字作用等同于属性的关键字,默认可以不传,不传则为public; */ public function __construct(array $model = array()) { /* 在实例方法内部访问对象的属性,使用 $this 关键字,且属性名前没有美元符号$; 类似于 oc 中的self,但是使用的是 `->` 而不是 `.` */ $this->model = $model; } /* 析构函数,作用和 oc 中的dealloc很像. */ public function __destruct() { $this->model = NULL; } /* 获取内容,用于输出显示. */ protected function getContent() { /* 默认把用户输入以JSON格式返回 */ $content = json_encode($this->model); return $content; } /* 定义实例方法:show; 定义方法使用的是关键字 function,且无法指定返回值,这点不如 oc 方便; */ public function show() { /* 使用$this关键字来调用另一个实例方法. */ $content = $this->getContent(); echo $content; }}
此时你访问 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,输出应该是:
{"id":"42","name":"iOS122","age":"25"}
说明,页面的确跳转到了 HomeViewController控制器,并有效输出;而且输出的是我们移动端开发最常接触的 json 格式的数据.
以上的代码,充分展示了php作为一门面向对象(OOP)语言最常用的几个功能,如定义属性,定义实例方法,在示例方法内访问属性与实例方法等.PHP作为一门弱类型的OOP语言,也有一些非常强大的特性,推荐阅读:
重载
魔术方法
后期静态绑定
网上关于MVC中M的讨论,此处我选取的是最基本的一种: M专指用于存储某种数据的类的实例.它可以用于数据的格式化存储和传递,但不应包含发起网络请求和读写数据库等操作;
在本文讨论的Model中,我们进一步简化了Model,允许且只允许用于通过URL来定义某个控制器的Model;
PHP 是一本弱类型的语言,所以不必专门为某种控制器指定某种类型的Model.
"PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。"
返回 JSON 格式的数据,已经达到了做移动端开发的需要,但此处仍然使用HTML语法来显示数据,以便于更好地理解.用下面的代码替换 HomeViewController.php 文件的 getContent 方法:
/* 获取内容,用于输出显示. */ protected function getContent() { $content = '<html><body><ul>'; foreach ($this->model as $key => $value) { $content .= "<li>$key:$value</li>"; } $content .= '</ul></body></html>'; return $content; }
此时你访问 http://localhost/find_php/index.php?viewController=HomeViewController&model[id]=42&model[name]=iOS122&model[age]=25,输出应该是:
id:42
name:iOS122
age:25
浏览器中会被自动解析为一个列表.对应的HTML代码如下:
<html><head></head><body><ul><li>id:42</li><li>name:iOS122</li><li>age:25</li></ul></body></html>
此处使用了简单的HTML标签.
本文通过模拟实现 iOS 的MVC的设计模式,来概要性地讲解了PHP中的对应的各个概念.熟悉以上操作,可以使你具备自定义服务器接口的基本能力.参与讨论,参见:http://www.ios122.com/tag/php/ 更全面地信息,参见PHP官方中文文档: http://ua2.php.net/manual/zh/langref.php.