*

「->」の意味がわかれば、PHP半分わかったも同じ。

公開日: : 最終更新日:2013/01/08 PHPで実際開発して

Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark

バッチ系のプログラムの書き屋(VB)だった僕が、
どうしてもわからないこと。
感覚的に理解できないこと、それが
「->」の意味、だった。

以下、自分でまとめることによって復習&備忘録。
1.オブジェクト指向プログラミングを理解する。
データとそれを操作する手続きをオブジェクトと呼ばれるひとまとまりの単位として一体化し、
オブジェクトの組み合わせとしてプログラムを記述するプログラミング技法。
プログラムの部分的な再利用がしやすくなるなどのメリットがある。
代表的なオブジェクト指向言語としては、C言語にオブジェクト指向的な拡張を施したC++言語。
2.クラス(型、タイプ)とインスタンス(実体)を理解する
オブジェクト指向プログラミングで、クラスを基にした実際の値としてのデータのこと。
クラスと対比して用いられることが多く、クラスを「型」、インスタンスを「実体」として説明されることもある。
「オブジェクト」とほぼ同義語のように用いられることが多いが、
実際にメモリ上に配置されたデータの集合という意味合いが強く、データの実体をより具体的・直接的に捕らえた用語である。

例えば「名前、身長、体重」というクラスがあるとすれば、そのインスタンスは「田中、175、65」というように作られる。
一つのクラスから複数のインスタンスを作ることができ、それぞれのインスタンスは違った値を持ちうる。
プログラムの中で実際に扱われるのはクラスではなく、こうして作られたインスタンスの方である。
なお、ひな形となったクラスを表す際には「○○クラスに属するインスタンス」
「○○クラスのインスタンス」という表現が用いられる。
*英語表現「For instance」和訳:例えば

3.メンバ、メゾッド(クラス内の関数の事)、メンバ変数 &new
1)new:あるクラスのインスタンスを生成するには、new キーワードを使わなければならない。
2) -> は、インスタンス内のメンバ変数やメソッドへのアクセスを表す。

例1:

<?php
 //クラスを定義
 class SomeClass{
 var $sName = 'メンバ変数'; //クラス内の変数の事
//クラス内の関数の事をメソッドと言います。
 function Message() {
 echo 'Hello World!<br/>';
 }
 }
 //オブジェクト作成
 $oObj = new SomeClass();
//オブジェクトのプロパティ呼び出し
 echo $oObj->sName."<br/>";
//オブジェクトのメソッド呼び出し
 $oObj->Message();
//オブジェクト型チェック
 echo '$oObjの型:'.gettype($oObj)."<br/>";
 ?>

例2:
$xml = new SimpleXMLElements($fileContents);
$maxcustomer = count($xml->customer);
SimpleXMLのインスタンスは変数$xmlに格納して利用。
このオブジェクトは、$xml->customerとするとルート直下のcustomer要素がメンバーとしてアクセスできる
$xml->customer[$Loop]->name
root要素は常に1つ存在するので、事実上それを意識する必要は無いため、root直下の要素からアクセスを開始します。そして
その要素がさらに子要素(name要素やage要素)を持つ場合は「->」でつなげることでアクセス可能。
このxmlデータの場合、customer要素の数は任意ですので、count()で要素の数をカウントします。
このようにSimpleXMLオブジェクトは配列のようにアクセスできます。
*各要素へのアクセス
<root>
<customer>               —$xml->customer[0]
<name type=”kanji”>山口</name>   —$xml->customer[0]->name
<age>39</age>                       —$xml->customer[0]->age
</customer>
—以下はPHPマニュアルのサイトをコピペ
http://php.net/manual/ja/simplexml.examples-basic.php

例 1. XML文字列を設定するインクルードファイル example.php

<?php
 $xmlstr = <<<XML
 <?xml version='1.0' standalone='yes'?>
 <movies>
 <movie>
 <title>PHP: Behind the Parser</title>
 <characters>
 <character>
 <name>Ms. Coder</name>
 <actor>Onlivia Actora</actor>
 </character>
 <character>
 <name>Mr. Coder</name>
 <actor>El Act&#211;r</actor>
 </character>
 </characters>
 <plot>
 So, this language. It's like, a programming language. Or is it a
 scripting language? All is revealed in this thrilling horror spoof
 of a documentary.
 </plot>
 <rating type="thumbs">7</rating>
 <rating type="stars">5</rating>
 </movie>
 </movies>
 XML;
 ?>


SimpleXMLの容易さが最も明確に現われるのは、 簡単なXMLドキュメントから文字列または数字を展開する時です。
例 2. <plot> を取得する

<?php
 include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie[0]->plot; // "So this language. It's like..."
 ?>


例 3. SimpleXMLでユニークでない要素にアクセスする

単一の親要素の子要素としてある要素のインスタンスが複数存在する時、 通常の反復処理を適用することができます。

<?php
 include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* 個々の <movie> ノードに対して、<plot> を分割して表示します */
 foreach ($xml->movie as $movie) {
 echo $movie->plot, '<br />';
 }
?>


例 4. 属性を使用する

ここまでは、要素の名前と値を読む方法のみを扱って来ました。 SimpleXMLは要素の属性にアクセスすることも可能です。 要素の属性にアクセスする方法は、配列

の要素に アクセスするのと全く同じです。

<?php
 include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* 最初の映画の <rating> ノードにアクセスします。
 * また、その評価も出力します。*/
 foreach ($xml->movie[0]->rating as $rating) {
 switch((string) $rating['type']) { // 要素のインデックスとして、属性を取得します
 case 'thumbs':
 echo $rating, ' thumbs up';
 break;
 case 'stars':
 echo $rating, ' stars';
 break;
 }
 }
 ?>

例 5. 要素および属性をテキストと比較する

要素または属性を文字列と比較する、もしくは、文字列を引数とする関数に 渡すには、(string) により文字列にキャストする 必要があります。さもないと、PHP

はこの要素をオブジェクトとして扱います。

<?php
 include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
if ((string) $xml->movie->title == 'PHP: Behind the Parser') {
 print 'My favorite movie.';
 }
htmlentities((string) $xml->movie->title);
 ?>

例 6. XPath の使用

SimpleXML は、XPath を標準でサポートしています。 <character> 要素を全て見つけるには、 以下のようにします。

<?php
 include 'example.php';
 $xml = new SimpleXMLElement($xmlstr);
foreach ($xml->xpath('//character') as $character) {
 echo $character->name, 'played by ', $character->actor, '<br />';
 }
 ?>

‘//’ はワイルドカードとして動作します。絶対パスを指定するには、 スラッシュを一つだけにします。


例 7. 値を設定する

SimpleXMLの中のデータは、定数とすることができません。 オブジェクトは、その全ての要素について変更が可能です。

<?php
 include 'example.php';
 $xml = new SimpleXMLElement($xmlstr);
$xml->movie[0]->characters->character[0]->name = 'Miss Coder';
echo $xml->asXML();
 ?>

上のコードは、元のXMLドキュメントと全く同じXMLドキュメントを新規に 出力しますが、新しいXMLファイルでは、Ms. Coder が Miss Coder に変更されていると

ころが異なります。


例 8. 要素と属性を追加する

PHP 5.1.3 以降では、SimpleXML を使用して簡単に子要素および属性を追加することができます。

<?php
 include 'example.php';
 $xml = new SimpleXMLElement($xmlstr);
$character = $xml->movie[0]->characters->addChild('character');
 $character->addChild('name', 'Mr. Parser');
 $character->addChild('actor', 'John Doe');
$rating = $xml->movie[0]->addChild('rating', 'PG');
 $rating->addAttribute('type', 'mpaa');
echo $xml->asXML();
 ?>

上のコードは、元と同じオブジェクトを出力しますが、 そこに新しいキャラクターと評価が追加されています。


例 9. DOMとの相互運用性

PHPは、SimpleXML形式とDOM形式の間でXMLノードを変換する機構を有しています。 この例では、DOM要素をSimpleXMLに変換することができます。

<?php
 $dom = new domDocument;
 $dom->loadXML('<books><book><title>blah</title></book></books>');
 if (!$dom) {
 echo 'Error while parsing the document';
 exit;
 }
$s = simplexml_import_dom($dom);
echo $s->book[0]->title;
 ?>

関連記事

04

阪神タイガース関連新聞記事のTweetとHtmlタグ

  これは、僕のメモです。 1.前提その1: まず、プログラム動かす

記事を読む

PHPで開発中

where 条件の中に、変数 を指定する

  僕のメモです   1.like の場合(部分一致)

記事を読む

テキストファイルの操作で改行コードを入れる

  これは、僕のメモです。   1.何も書いていないまっさらな

記事を読む

no image

PHP雑記

1.scheme(スキーム、スキーマ):構造、機関のこと。データベースと同義語。 *僕は テーブル

記事を読む

MySQL

PHPからprepareステートメントを使ってテーブルを作成する

これは僕のメモです。 「PHPからprepareステートメントを使ってテーブルを作成す

記事を読む

PHPで開発中

データベースを配列に入れて、その中で範囲指定する

約600あるレコードのうち、 100から200の間のレコードだけ表示させる、 結構てこづりました

記事を読む

no image

OpenSSLが有効になっていない」

レンタルサーバでは何も問題ない、localhost(apache2.2,PHP5.3)だと以下のエラ

記事を読む

no image

PHPをインストールする時、いつも忘れる事(short_open_tag)

一般的なマニュアルだと、以下の2箇所の修正で ApacheがPHPファイルを認識する。 1.h

記事を読む

no image

pearがインストールできない。

エラーの内容は以下の通りです。 C:\php5>go-pear.bat interna

記事を読む

PHPで開発中

DOMオブジェクト、find関数、foreach文

  *プログラムリストはこのページの最後にあります。 前段(参考)

記事を読む

MySQL
MYSQLのコマンド入力で「;」セミコロンを入力し忘れた時抜け出す方法

これは僕のメモです。   MYSQLのコマンド入

MySQL
MySQLのコマンドプロンプトでのバックアップとリストア

これは自分のメモです バックアップ 1.管理者 で コマンドプロン

マザーボードが壊れた
Windows8のパソコンが壊れた->パソコン壊れて分かったこと

Windows10へ変えようと思いメモリーを増やした。 現在8GB-

光は早い、というのは、すでに昔の言葉ではないか。
光は早い、というのは、すでに昔の言葉ではないか。

今日、巨人VS阪神 画面はテレビ、音声はラジコ で聞こうと思ったら

サイトの表組みを取り込むその3
表組みのサイトをexcelに取り込んでURLまで抽出する

これは、僕のメモです。   1.コピーするサイト

→もっと見る

PAGE TOP ↑