2月20日

progate php学習コースⅡ

・クラス(設計図)とインスタンスの作り方

<?php

class menu {    //クラスの書き方

}      //閉じる


$curry = new Menu();   //$変数 = インスタンス(new クラス名())

?>// Menuクラスのインスタンスを作り、変数$curryに代入

※インスタンスはクラスの外で生成する。

 

 

・プロパティとメソッド

クラスにはプロパティとメソッドを定義する。

1、プロパティ 料理名・値段

<?php
class Menu   
public $name;  // $nameというプロパティを定義
}

 

$curry = new Menu();  //インスタンスの作成

$pasta = new Menu(); //インスタンスの作成

 

$curry ->name = 'CURRY'; // $curryのnameプロパティに'CURRY'を代入
$pasta->name='PASTA';       // $pastaのnameプロパティに'PASTA'を代入

 

echo $curry->name;             // $curryのnameプロパティをecho

echo '<br>';
echo $pasta->name;            // $pastaのnameプロパティをecho

?>

 

2、メソッド  getName(料理名の取得)・getTotalPrice(値段の計算)

<?php
class Menu {
public $name;

public function hello(){             // helloメソッドを定義
echo '私はMenuクラスのインスタンスです';
}
}

$curry = new Menu();
$pasta = new Menu();
$curry->name = 'CURRY';
$pasta->name = 'PASTA';

$curry ->hello();                      // $curryに対してhelloメソッドを呼び出し

echo '<br>';

$pasta -> hello();                   // $pastaに対してhelloメソッドを呼び出し

?>

 

 

・$this 

メソッド内でインスタンスのプロパティやメソッドにアクセスしたい時には「$this」という特殊な変数を用いる。

<?php
class Menu {
public $name;
public function hello() {

echo '私は'.$this->name.'です';  //$thisは呼び出してる$curryインスタンスのこと
}// '私は○○です'と出力
}

$curry = new Menu();
$pasta = new Menu();
$curry->name = 'CURRY';
$pasta->name = 'PASTA';
$curry->hello();         //$curryインスタンスの呼び出し
echo '<br>';
$pasta->hello();                                  //$pastaインスタンスの呼び出し

?>

 

・コンストラクタ

「__construct」という特別なメソッドを定義すると、newを用いてインスタンスを生成するときに、このメソッドが自動的に呼ばれる。

 

public function __construct(){
echo'1つのメニューが作られました';

$curry = new Menu();                    //__constructが自動的に呼ばれる。
}

ここでわかりにくくなってきたので以下クラスの例の変更

<?php

 

Class Goblin{ //クラスの定義

 

public$hp; //プロパティ

public$mp;

public$name;

 

public function __construct($name){ //コンストラクタ

$this->name= "ゴブリン”.$name;

$this->hp =rand(1,20);

$this->mp =rand(1,5);

 

 public function kougeki(){ //メソッド

echo "{$this->name}は勇者を攻撃;

}

}

 

$gob1 =new Goblin("A");//インスタンスの生成

echo $gob1->name; //プロパティへのアクセス

echo"<br>";

echo $gob->hp;

echo"<br>";

echo $gob->mp;

echo"<br>";

 echo $gob1->kougeki(); //メソッドの呼び出し

echo "<br>";

?>

以上の書き方ならまだわかりやすかったが、難しい。理解するのに時間がかかった。

 

○PAIZA

復習問題 簡単な掛け算 クリア

新規問題 文字の連結問題 trimをつけて文字列の余計な文字を消して、連結

だったが、シングルクォテーションとダブルクォーテーションで出力結果が違う

ことを知った。

echo "$b$a$b"で文字列出力されて正解だったが、’で囲むと不正解。’は変数名だけ

が反映された。

また変数ばかりの出力では$b . $a . $bのようなドットでつなぐことはしない。

f:id:hinairo:20210221000053p:plain

○もくもく会出席

・java scriptのsutimilusというフレームワークがあり、記述が簡単でhtmlに追加記述

する際は書き足しやすいとのこと。説明されておられたがさっぱり分からなかった。

 

・wordpressをする上でPHPは必要とのこと。またrubyを学習されている方からする

と構造が似ているらしい。

 

現役エンジニア(8年選手)も最近入塾したとのこと。プログラミングは奥が深いん

だろうなという感想。

 

f:id:hinairo:20210221000124p:plain

f:id:hinairo:20210221000132p:plain

 

本の名言

私たちは自分の才能を市場に送り出す素晴らしい機会を持っているのである。であるならば、思い切ってあなたの夢に挑戦することだ。もし失敗したらどうしようかといった考えは無視することだ。どんなに失敗にも必ず成功へのきっかけが潜んでいる。