PHP学習2日目
今日はあんまり勉強する気にならなかった。前日の夜遅くまで勉強しても次の日のテンションがさがるだけ早く寝て早起きしてやったほうがいいね。
学習としては今日も変わらずProgate2の復習と3~4、一応これで一通り終わった。
これが終わるのに備えて本を一冊買ったけど、その本を発送できるのが14日らしくて届くのにまだ時間がかかりそうだから、dotinstallとWEB用の開発環境らしいxamppかmanpを準備するとこまでをしばらくしようと思う。
今日はとりあえずクラスやインスタンスの作成、それとクラスの継承の話を書く。クラスを定義するとだいたいこんな感じ。
<?php
class Item{
public $name; //publicはどこからでもアクセス可能。
private $price; // privateはこのクラス内からしかアクセスできない
protected $str; // protectedは継承したクラスからもアクセスできる
public function getName(){ //ゲッターと呼ばれるメソッド
return $this->name;
}
// セッターと呼ばれるメソッドもある。
public function __construct($name,$price,$str){
// コンストラクタはインスタンス生成時に自動で作動する
$this -> name = $name;
$this -> price = $price;
$this -> str = $str;
}
}
?>
これは設計図。この設計図は名前と値段と強さが分かるItemを作る感じ。途中までしか書いてないけど。。
基本的に設計図をうっかり書き換えたくないし、誰かに書き換えられたくもないからprivateやprotectedを使って最初にアクセスできないように制限してしまうみたい。アクセスできないように制限はするけど指定してある値を引き出したり置き換えたりしたいから、置き換え専用のセッターや引き出し専用のゲッターがある。ATMみたいな感じ?直接お金は触れないけど、ちゃんと手続きすれば引き出したり預けたりできる。直接お金だけ置いてあって、みんなが持ってったり置いてったりすると危険。そんな感じ。
書くのめんどくさくなってきた。
インスタンスの説明。
インスタンスはクラス(設計図)を元にして作られた完成品。インスタンスを作るのは簡単で、この完成品はこういう名前で、この設計図を使ったよって書くだけ。
$sword = new Item(); //swordがItem設計図を使って作られた。
$axe = new Item(); //axeがItem設計図を使って作られた。
これに設計図通り値を入れるとこうなる。
$sword = new Item('sword',1200,3);
$axe = new Item('axe',900,2);
このswordという完成品はswordというnameで1200 priceで3 strだよってこと。簡単にいうと 剣 1200円 強さ3 って感じ。
あとはこういう完成品の情報を持って行ったり書き換えたりしてサイト中で使うって感じかな。例えばショッピングサイトにして剣の写真の下にswordのname表示!とか swordとaxeをカートに入れたらsword price + axe priceでtotal price 2100円ですよ!みたいな表示にするとか。
最後にクラスプロパティとクラスメソッドだけ書いて終わる。こいつらはインスタンス一つ一つの情報を決めるんじゃなくて、インスタンス全体の状況を把握したりできる。例えば、今武器は5個作られていますとかインスタンスが全部でいくつ出来たかを教えてくれたりする。
class Item{
protected static $count = 0;
public static function getCount(){
return $this -> count;
}
}
詳しく書かないけど、こんな感じ。staticをつけるとクラスプロパティとかクラスメソッドになる。
説明適当なのに難しいコード書いてあって誰に向けて書いているのか、謎のnoteになってるけど、だんだん方向性決めていくから今はこれでいい。毎日書いてるから偉い。
このスタイルはめんどくさすぎるから、明日からもっと簡単に学習状況だけを書くことにする。
おやすみ。