繰返して使う文字列をクラス化し、連想配列から条件に一致するデータを取得
クラスとは定数や変数、関数をまとめて入れて置く箱のようなもので、必要な時に必要なものを取り出すことができます。多くの場合、関数でもなんとかなりますが、規模が大きくなるとクラスが必要になってきます。
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
// Productというクラスを宣言。 |
class Product{ |
// プロパティー(メンバ変数、フィールド、属性とも言います。) |
public $name; |
public $price; |
// コンストラクタメソッド(このメソッドを記述するとインスタンス化の際に、自動で呼び出されます。) |
public function __construct($name,$price) { |
$this->name = $name; |
$this->price = $price; |
} |
// メソッド(関数のことです。) |
public function sampleFunc() { |
echo "{$this->name}は{$this->price}円です。"; |
} |
} |
$hairetu = array( |
"ミカン" => "200", |
"レモン" => "250", |
"スイカ" => "400", |
"リンゴ" => "300", |
); |
foreach($hairetu as $key => $val){ |
if($val >= 400){ |
$key = '一番高値の'.$key; |
} |
// インスタンス化(オブジェクトを作ります。) |
$content = new Product($key, $val); |
// メソッドの呼び出し |
$content->sampleFunc(); |
} |
実行結果:ミカンは200円です。レモンは250円です。一番高値のスイカは400円です。リンゴは300円です。
PHP
3行目のクラス名はアルファベットの大文字と小文字、アンダースコアなどが使えますが最初の一文字目に数字は使えません。また、関数名と同じくクラス名でも大文字小文字の区別はされません。
5と6、8、13では、publicを宣言し、これらはどこからでもアクセスできます。
8は、コンストラクタを使っており、オブジェクト生成によって自動的に呼び出されます。
9と10では、$thisを使ってクラス内部の変数を代入しています。
13はメソッド、つまり関数です。14は30のメソッド呼び出しによって、28行目の$keyと$valの値がコンストラクタの引数である$nameと$priceに渡され、その結果を表示しています。
17から22は連想配列です。23行目のforeachで回し、28行目でインスタンス化しています。
30でsampleFuncメソッドを呼び出しています。