30歳 独学で始めるプログラミング ~WEBデザイン・アプリ開発~

ITスキルに興味がでたので、codeを書いてみたら面白くてハマってしまいました!日々何をやったのかを中心に、記事を書いていきたいと思います。

33日目:PHP 学習:親クラスのコンストラクタ情報一部引き継ぎ、閲覧者の行動による条件分岐 (parent、href="url?閲覧者行動情報")

<学習日>

33日目

<学習内容>

① PHP Ⅲ(71-100%):親クラスのコンストラクタの一部引き継ぎ、アイコンの数で情報を見える化 (parent、fot文のアイコンへの適用)

② PHP Ⅳ(0-21%):閲覧者の行動(クリック)によるリンク先ページの条件分岐 (<a>リンクページ+クリックしたコンテンツ情報</a>)

<参考>

Progateレベル:144

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200805234747p:plain

本日はPHPの最終講義のⅣに少し足を突っ込んだところで終了です。

 

だんだんと最終系のHPの形も見えてきて、楽しくなってまいりました^^

 

 

① PHP Ⅲ(71-100%):親クラスのコンストラクタの一部引き継ぎ、アイコンの数で情報を見える化 (parent、fot文のアイコンへの適用)

f:id:yakuzen_kokoro:20200805234757p:plain

Ⅲの最後では、クラスの引継ぎの中で「どう省力化していくのか」という点を学んでいきました。

 

具体的には親クラスのコンストラクタを、一部引き継ぐときに「parent」ですっきりさせましょうという内容です。

 

では、さっそく具体的なcodeを挙げながら、振り返っていきます!

 

・親クラスのコンストラクタの内容を、子クラスのコンストラクタの内容に一部引き継ぐには

親クラスを「extended」した子クラスにおいて、一部でもコンストラクタの修正が入った場合には、全てをオーバーライドする必要がある。

ただし、オーバーライドの内容は殆ど親クラスのコンストラクタと重複することが想定されるので、部分的に親クラスのコンストラクタを引き継ぐ方法がある。

 

具体的には「parent」を使用して、子クラスの中にて以下のようなcodeとなる。

 

public function__construct($a, $b, $c){
parent::__construct($a, $b)
$cに対する処理
}

 

上記のcodeで、$a及び$bに対しては親クラスのコンストラクタと同じ処理が、加えて$cに対しては、ここで指定した処理が行われる。


・レモンマークの数で酸味を表示したい場合

その商品の酸味プロパティに、各商品ごとの酸味を数字でデータ格納しておく。その状態でHTML上に「for」文を挿入し、酸味データの数だけ、特定の画像を繰り返し表示させればOK。

具体的には以下のようなcodeとなる。

 

<?php for($i=0; $i<$food->getSour(); $i++): ?>
<img src="レモンマークのurl">
<?php endfor ?>

 

for構文において、処理の中に$iが使用されていない場合でも、$iの回数だけ処理を繰り返すということ。
この場合は、呼び出されたインスタンスごとに、酸味データの回数だけ、レモンマークが繰り返して表示されるというcodeになる。

 

② PHP Ⅳ(0-21%):閲覧者の行動(クリック)によるリンク先ページの条件分岐 (<a>リンクページ+クリックしたコンテンツ情報</a>)

f:id:yakuzen_kokoro:20200805234918p:plain

PHPも最終節に入りました^^

 

ここでは各メニューをクリックしたときに、クエリ情報としてリンク先のurlに情報を加えて、各メニューごとのレビューページにアクセスするというWEBアプリを開発します!

 

ではさっそく、具体的なcodeを挙げながら、振り返っていきます!

 

・リンクのはり方と、リンクに追加情報を追加する方法

リンクは<a href="url"></a>で作成することが出来るが、ここに特定の情報を追加したい場合は、hrefの中身に情報を追加する。

たとえば、各メニューごとの、そのメニューに関する情報を付記したいとすると、具体的なcodeは以下のとおり。

 

<a href="リンクのurl?S追加情報"></a>

 

例えばMenクラスの中で定義した、$kenインスタンスの名前プロパティ$nameを情報として追加したい場合は、以下のとおりとなる。


<a href="infomation.php?<?php echo $ken->getName()?>"></a>

 

これで、リンク先にはケンのページとして設定することが出来る。
(ユーザーの行動<クリック>に紐づいた設計にすることができるということが重要)

 

ということで、Ⅳについてはさわりの部分だけとなりましたが、明日以降どんどん進めていこうと思います!

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

32日目:PHP 学習:クラスによる条件分岐/子クラスにアクセス権を付与する (instanceof、protected)

<学習日>

32日目

<学習内容>

① PHP Ⅲ(51-70%):クラスによる条件分岐/子クラスにアクセス権を付与する (instanceof、protected)

<参考>

Progateレベル:143

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200804234337p:plain

本日は昨日と打って変わって、少なめな感じです。

 

ちょっと別の勉強をしていましたが、プログラミングも必ず毎日少しは触れるようにしていきます^^

 

 

① PHP Ⅲ(51-70%):クラスによる条件分岐/子クラスにアクセス権を付与する (instanceof、protected)

f:id:yakuzen_kokoro:20200804234437p:plain

はい、ということで、本日はクラスによる条件分岐と、アクセス権ごとに3つのcodeを使い分けるという勉強をしました^^

 

具体的なcodeを挙げながら、本日の学習内容を振り返っていきます!

ちょっと先日の復習もかねて「self」のcodeも備忘録的に載せています。

 

・そのクラス内で、クラスプロパティを参照したい場合

「self」を使用する。具体的なcodeは

 

self::$type ++;

 

のような形となる。


インスタンスごとに処理条件を変えたいとき

foreach構文で、全てのインスタンスに対して、繰り返し処理をしているとする。

その繰り返し処理で、「このグループのインスタンスには処理A」を「このグループのインスタンスには処理B」を実行したいといった場合、if文と組み合わせて各子クラスごとに処理を仕分けることが出来る。

 

具体的には、lefterには「左利きです」と表示させたい場合には、以下のようなcodeとなる(右利き、左利きの英語は適当)。

 

<?php if($man instanceof lefter): ?>
<p><?php echo "私は左利きです" ?></p>
<?php endif ?>

 

<?php?>で関数を挿入するときには、少し書き方が変わることがポイントの一つ。

instanceof クラス名としていすることで、「このクラス名だったら、次の処理をしてね」という意味になる。


・クラスで定義したアクセス権について

各々のアクセス可能な範囲についてまとめると、以下のとおり。

 

public:クラス内、子クラス内、クラス/子クラス以外
protected:クラス内、子クラス内
private:クラス内

 

上から順番に、制限が強くなる。

 

明日はなるべくPHP Ⅲを終えて、Ⅳに突入できるようにしたいと思います!

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

31日目:PHP 学習:カプセル化、フォームのデータ授受、クラスプロパティ/メソッド、クラスの細分化 (private, static, extends)

<学習日>

31日目

<学習内容>

① PHP Ⅱ(67-100%):カプセル化してフォームを作成する (private、フォームを使用したデータ授受)

② PHP Ⅲ(0-50%):クラス固有の値を適用する/クラスの細分化をする (クラスプロパティ、継承。独自プロパティ/メソッド)

<参考>

Progateレベル:142

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200803223509p:plain

本日は少し進みが多かったですね^^

 

カプセル化(外からデータの改ざんが出来ないようにする仕組み)という技術と、クラスを実用的に使用する方法について勉強しました。 

 

 

① PHP Ⅱ(67-100%):カプセル化してフォームを作成する (private、フォームを使用したデータ授受)

f:id:yakuzen_kokoro:20200803223643p:plain

前半はカプセル化について勉強しています^^

 

カプセル化は外からの「データ改ざんを制限する」機能となるのですが、容易に変更が出来なくなるので、データの読み取りにひと手間加えることになります!

 

さっそく、具体的なcode例を挙げながら、確認していきましょう^^

 

・外部からクラスのプロパティの変更を制限する場合

クラスのプロパティを読み取り専用にするようなcodeをかく。具体的には「public」で指定していたプロパティを、「private」で指定すればOK。

ただこのままだと、プロパティの値を読み取れなくなってしまうので、クラス内で値を取得するだけの関数を記述する必要がある。

具体的なcodeは以下のとおり。

 

private $age;
public function getAge(){
return $this->age
}

<p><?php echo getAge() ?></p>


・変数に初期値を入れる場合

たとえば、年齢の初期値を10にしたい場合は、以下のcodeのとおり。

 

private $age = 10;


・値をセットする場合

変更したい変数がprivateだと変更することができないので、セッターとゲッターを組み合わせる。また、変数には初期値を指定することが出来る。

たとえば、年齢について特定の値を入れたい場合、以下のようなcodeとなる。

 

private $age =0;

public function setAge($age){
this->age = $age;
}

public function getAge{
return this->age;
}


・<form>を使用して、別のページに入力した値を飛ばす

たとえば、入力画面で年齢を入力して、次の確認ページ(confirm.php)で表示する場合、以下のようなcodeとなる。なお、クラスの方で名前は既に取得済みとしている。

 

入力フォーム側
<form method="post" action="confirm.php">
<input type="text" value="10" name="<?php echo $men->getName() ?>">
</form>

 

確認画面側
<?php $age = $_POST[$men->getName()]?>
<?php echo $men->getName() ?>
<?php echo $age ?>

 

ポイントは、入力フォーム側の<input>で定めているname属性が「実際に入力された値を$_POST[$men->getName()]という受け手側の引数に代入する」という構文になっていること。

ややこしいのは、クラス側で定めている名前を$men->getName()としている点で、かなり混同しやすいので注意。

 

また、この上でフォームに入力した年齢を出力したい場合には、セッターの呼び出しとして以下のcodeとすればよい。

 

echo $men->setAge($age)

 

$ageに実際に入力された数字が入り、それを引数としてセッターの値として取得する。
なんでこんな回りくどいことをするかというと、複数の男のデータを並べたいときにforeach関数を使用するが、各々の男の情報を引き出すときにクラスを介する必要があるからである。


・クラス内で変数や関数を呼び出す場合の注意点

「必ず$this->をつけること」

これがルールみたい

 

 ② PHP Ⅲ(0-50%):クラス固有の値を適用する/クラスの細分化をする (クラスプロパティ、継承。独自プロパティ/メソッド)

f:id:yakuzen_kokoro:20200803223918p:plain

オブジェクト指向というタイトルになっていますが、つまるところクラスを使いこなそうということです^^

 

今回新しい概念として「クラスプロパティ」と「クラスメソッド」が出てきました。

これはクラスが「枠+値」をもつことが出来る、ということです。

 

前回までだと、クラスは単純に枠を規定するものであり、「具体的な値はもたない」ものでした。

なので、インスタンスを作成することで、その枠にあてはまる値を格納するという使い方でした。

 

「クラスプロパティ」や「クラスメソッド」では、最初から値も持っているので、そのままデータを取り出しり、活用することが出来るという点がポイントです。

 

 具体的なcodeを見ながら、確認していきましょう^^

 

・クラスプロパティ/クラスメソッドの記述方法について

クラスプロパティ/メソッドとは、クラスで値まで持たしているプロパティ/メソッドのことである。

具体的なcodeは以下のとおり(private指定も可能)。

 

public static $プロパティ名;

public static function $メソッド名;


ポイントは「static」を記述することだけ。

 

インスタンスごとのプロパティと、クラスのプロパティの違いについて

クラスで定義しているのは基本的に「枠組み」だけで、具体的なプロパティに格納される値が、はインスタンスを生成するまでは空白の状態である。

なので、クラス名から直接プロパティの値を取り出すことが出来ない(必ずインスタンスと紐づけて、値を取り出すようになっている)。

 

上記と区別する形で、クラス自体で固有の値を持たせているものが「クラスプロパティ」である。
これはクラス自体で枠+値を有しているので、インスタンスを生成しなくても、直接読み取ることが可能である。

 

具体的にMenという名前のクラスから、クラスプロパティ$countの値を取り出すには、以下のcodeとなる。

 

echo Men::$count

 

インスタンスと紐づけたプロパティの値を取り出すときの「echo $men->age」、メソッドを呼び出すときの「echo $men->sum()」と確実に区別したい。
ようは「::」か「->」かの違い。


・クラスの継承

例えば、大枠としてMenというクラスを作っていたけれど、右利きと左利きとでちょっと違うクラスとしたい場合、もとのMenクラスの内容を引き継いで、新しいクラスを作ることができる。

引き継いだ内容に追加して、プロパティやメソッドを追加するとして、具体的なcodeは以下のとおり。

 

class Lefter extends Men {
public $プロパティ名;
public $メソッド名;
}

 

今日はかなり盛沢山でしたが、以前の言語で学んだことが中心だったので、さくさくと進められたと思います!

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

30日目:PHP 学習:フォルダ間通信と実用的引数 (require_once、return)

<学習日>

30日目

<学習内容>

① PHP Ⅱ(51-66%):フォルダ間通信と実用的引数 (require_once、return)

<参考>

Progateレベル:139

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200802223900p:plain

はい、ということで今日はほんの少しの勉強となりました^^

 

実は炎天下の中で、チャイルドシートのお試し設置をしていて、軽く熱中症っぽくなって、ダウンしておりました^^;;

 

夜少し回復したので、毎日少しでも続けると決めたので、無理のない範囲で進めてみました!

 

① PHP Ⅱ(51-66%):フォルダ間通信と実用的引数 (require_once、return)

f:id:yakuzen_kokoro:20200802223913p:plain

今回はフォルダを分けたときに、別フォルダの変数を参照する方法や、引数をより実践的に使用する方法について学びました^^

 

具体的なcodeを交えながら、振り返っていきます。

(ちなみに具体的なcodeは、Progateのそのままではなくて、自分なりに別の例に置き換えています。念のためというのと、自分で考えてアウトプットするためです)

 

・codeが長くなって、役割ごとにフォルダを分けたときに、他のファイルで定義した変数を使用したい場合

これは結構簡単で「require_once('フォルダ名')」を最初に記載するだけ。具体的なcodeは以下のとおり(men.phpフォルダの変数を読むとき)

 

<?php require_once('men.php') ?>


・引数は複数設定できるが、呼び出し時に設定する値の順番とリンクするので注意

たとえば、3つのプロパティを設定したい場合、a=名前、b=年齢、c=顔写真としたい場合は、以下のとおりのcodeとなる。

 

クラス内で:construct($a, $b, $c)

呼び出し先で:$ken = new Men ('名前', 年齢, '顔写真のurl')


・何かを計算させる関数を定義して、その計算結果を表示させる方法

たとえば、円の面積を求める関数をメソッドとして定義して、これを表示させる場合は以下のcodeとなる。

 

public finction area(){
return $this->length * $this->length * 3.14
}

<p><?php echo $data->area() ?></p>


returnでメソッド自体にそのときの計算結果を格納してしまうのがポイント。

 

ということで、今日はこのくらいとなりますが、明日はカプセル化という新しい概念を勉強できそうです^^

 

新しい内容と聞くと、ワクワクしてしまうので、やっぱりプログラミングが好きなのかなと思います。

まだまだ趣味のレベルにも達していませんが、焦らず楽しんでいこうと思います^^

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

29日目:PHP 学習:HTMLにPHPを組み込む!($this、コンストラクタ、引数、HTMLへのPHPの組み込み)

<学習日>

29日目

<学習内容>

① PHP Ⅱ(23-50%):HTMLにPHPを組み込む!($this、コンストラクタ、引数、HTMLへのPHPの組み込み)

<参考>

Progateレベル:138

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200801232823p:plain

本日は昨日に引き続き、PHP Ⅱの内容を進めていきました^^

 

 

① PHP Ⅱ(23-50%):HTMLにPHPを組み込む!($this、コンストラクタ、引数、HTMLへのPHPの組み込み)

f:id:yakuzen_kokoro:20200801232904p:plain

はい、ということで、ややゆっくりめのペースで進めておりますが、今日の内容は「混乱しやすい」「基本的で重要」な単元が多かったので、ゆっくりとかみ砕きながら進めました^^

 

後半では、HTMLにPHPを実践的な内容で組み込むことを勉強でき、かなり楽しかったです!

 

明日以降の内容にも期待が高まります^^

 

では具体的なcodeを挙げながら、ハイライトで振り返っていきます。

 

・呼び出したインスタンスのプロパティを、メソッドに反映させたい場合は「$this->プロパティ名」を使う。


例えば、インスタンス名を$kenにして、その時のプロパティを各々「$nameをKen」「$ageを20」にして、メソッドとして「Kenは20歳です」を表示させたいとする。
このときのcodeは以下のとおり。

 

class Men {
public $name;
public $age;

public function info(){
echo "{$this->name}は{$this->age}歳です"
}}

$ken = new Men();
$ken->name = 'Ken';
$ken->age = '20';
$ken->info();


インスタンス生成時に自動発動する関数「public function __construct()」
このクラスのインスタンスを生成したときに、関数(メソッド)を呼び出さずとも、必ずある動作をして欲しいといったニーズがある場合に「public function __construct()」というメソッドを記述する。使用方法は普通のメソッドと同じ。

 

例えば、インスタンスを生成するたびに、必ず「インスタンスを生成しました」と表示させたい場合には、以下のとおりのcodeとなる。

 

class クラス名 {
public function __construct(){
echo "インスタンスを生成しました";
}}

 

注意点としては「functionの後にスペースが必要」なことと、「アンダーバーは2つ続けて書く」ということ。


・引数と変数の引用について

1.インスタンスを生成するときに、コンストラクタに引数をつっこめる。
2.コンストラクタ内でインスタンス内の変数に、引数を設定することができる。

 

以上を合わせると、「インスタンス生成時に引数としてつっこみたい値を記述⇒インスタンスの変数に値がつっこまれる⇒インスタンスの変数を$this->プロパティ名に代入する」という流れとなる。

 

例えば、以下のようなcodeで、「彼の名前はKenです」と表示させることができる。


class Men {
public $name;

public function __construct($name){
this->name = $name;
}

public function info(){
echo "彼の名前は{$this->name}です"
}}

$ken = new Men('Ken');
$ken->info();

 

上記の例だとうま味が感じられないが、データ数や引用する変数の数が増えれば増えるほど、必須のcodeとなるはず。


・HTMLにPHPを挿入する方法について

挿入する方法は最初に勉強した通りで、<?php ?>の中にPHPのcodeを記述するだけとなる。ただしforeachやforの繰り返しやifなどの条件分岐を組み込めて、初めてPHPをHTMLに組み込む威力が発揮できるので、今回はforeachを突っ込む場合を例にとってみる。

関数の組み込み方は、すこしcodeのコツと形式のポイントがあるので、何回か書いてみて慣れてしまうべし。

 

例えば、PHPで配列として$men=array($ken,$taku,$masa)を定義して、各々の年齢を<p></p>として一覧にしたい場合、以下のようなcodeとなる。

(クラスで$nameをプロパティとして設定しており、$men=array($ken,$taku,$masa)も記述済みとして)

 

<?php foreach($men as $man): ?>
<p><?php echo $man->name ?></p>
<?php endforeach ?>

ここでポイントは、PHP内で関数は「関数名(){処理}」で記載するが、{}の部分を消して、「{」を「:」で代用し、「}」は「end関数名」で代用するということ。

 

 

繰り返し関数を実際にHTMLに組み込めると、かなり構造的にHTMLを作成することが出来るようになる未来が見えるので、ワクワクしながら勉強を進めることが出来ました^^

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

28日目:PHP学習 道場(連想配列操作、foreach関数の中で条件分岐) & PHP Ⅱ(クラス、インスタンス、プロパティ、メソッド)

<学習日>

28日目

<学習内容>

① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)

PHP Ⅱ(0-22%):クラスの勉強!(クラス、インスタンス、プロパティ、メソッド)

<参考>

Progateレベル:137

 

<学習内容詳細>

f:id:yakuzen_kokoro:20200731212550p:plain

ということで、本日はPHPをごりごり進めました^^

 

PHPも個人的には好きな言語な気がします。というよりも、プログラミング言語に慣れてきただけ?そうであれば、めっちゃ嬉しい!

 

① PHP 道場(64-100%):道場で定着具合を確認!(連想配列操作、foreach関数の中で条件分岐)

f:id:yakuzen_kokoro:20200731212601p:plain

 

なにが衝撃だったかというと、連想配列になると、配列のときのようにfor関数で無理くり繰り返し計算をさせることが難しい(無理?)になってしまったこと^^;;

 

for関数を崇め奉っていた私としては、それなりに考え方をシフトする必要がありました。

 

結論から言えば、foreach関数を使えば問題ないので、今後は基本的にforeach関数に慣れていこうと思います!

 

では、具体的なcodeを紹介しながら、学んだ内容について書いていきます^^

 

連想配列から値を取り出す方法
たとえば、

 

$man = array('name' => 'Mark', 'age' => 25 )

 

という連想配列から、「男の名はMark。年齢は25歳だ」とアウトプットしたい場合は以下のとおりのcodeとなる。

 

echo "男の名は{$man['name']}。年齢は{$man['age']}だ";


ここで、連想配列の中に複数の連想配列が格納されている場合は、foreach関数を使って記述すればよい。

通常の配列の場合だと、for関数でも記述できたが、連想配列の場合はforeachにしないと難しそう。これは、数字じゃなくてキーで、取り出したい値を指定するから。

 

例えば、$menを連想配列で複数人の情報を記述しており、そのすべての情報を「男の名はMark。年齢は25歳だ」のような形でアウトプットしたい場合は、以下のとおりのcodeとなる。

 

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
}


ついでに、年齢の合計を求めたい場合は、以下のとおり$sumのような変数を定義しておいて、foreach関数の処理の中にぶっこんで、最後にechoすればよい。

foreach関数の中に、$sumのechoをぶっこむと、毎回その人の情報までの合計年齢を出されてしまうので要注意。また、foreach関数前に$sumは定義しておかないとエラーになる。

たとえば、追加の情報として「男たちの年齢の合計は○○だ」という情報を出したい場合は、以下のとおりのcodeとなる。

 

$sum = 0;

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
$sum += $man['age'];
}

echo "男たちの年齢の合計は{$sum}だ";


さらに一歩踏み込んで、最高齢の人の名前と年齢を抽出したい場合を考えよう。その場合は、foreach関数の処理の中に、if関数をぶっこんでおけばよい。

例えば、追加の情報として「最高齢の男の名は○○で、なんと××歳だ」という情報を出したい場合は、以下のとおりのcodeとなる。


$sum = 0;
$max = 0;
$maxName = 'none';

foreach($men as $man){
echo "男の名は{$man['name']}。年齢は{$man['age']}だ";
$sum += $man['age'];
if($max < $man['age']) {
$max = $man['age'];
$maxName = $man['name'];

}
}

echo "男たちの年齢の合計は{$sum}だ";
echo "最高齢の男の名は{$maxName}で、なんと{$max}歳だ";

 

こんな感じです。

最後の方の内容は、こう色々と使いこなしている感があって、とても面白かったです。

 

スライドやヒントも見ないで、このくらいであれば記述できるようになってきたので、1月前と比較して、少しはプログラミング脳になってきたんじゃないかな、と感じております!

 

 ② PHP 道場(0-22%):道場で定着具合を確認!(クラス、インスタンス、プロパティ、メソッド)

f:id:yakuzen_kokoro:20200731212739p:plain

きましたね、クラスとかインスタンスとか!

 

JavaScript Ⅳで結構頑張って理解してきたところなので、いい感じで進められていると思います^^

 

↓2週間ほど前の学習内容

yakuzen-kokoro.hatenablog.jp

 

JavaScriptの時とは細かい書き方だけ違うものの、基本的に考え方は全く一緒(今のところ)^^

 

PHP ver.で学んだ内容について、具体的なcodeとを交えて記載すると以下のとおりとなります。

 

・クラスを作成する方法
クラスにはプロパティとメソッドがあり、「プロパティはそのクラスの特性」「メソッドはそのクラスの処理内容」と考えればOK。

そのうえで、具体的な定義方法は以下のcodeのとおり。

 

class クラス名 {
public $プロパティ名;
public function メソッド名()}

 

つまり別の言い方をするのであれば「プロパティは変数」「メソッドは関数」である。


・クラスからプロパティやメソッドを呼び出す方法
ひな型を「クラス」といって、個別のケースに対応したプロパティや、メソッドをそれぞれ「インスタンス」という。

クラスを作成してから、インスタンスとして呼び出すことで、一見手間がかかるように見えるけれど、データ数が増えれば増えるほど、手間が省けるという利点がある。

 

具体的にインスタンスを呼び出すには、以下のcodeを記述すればよい。

 

<プロパティの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->プロパティ名 = '具体的な値';
echo $インスタンス名->プロパティ名;

 

<メソッドの呼び出し>
$インスタンス名 = new クラス名();
$インスタンス名->メソッド名();

 

ポイントは呼び出し時には、プロパティに「$」をつける必要がないこと。

メソッドの呼び出しは、echoが不要なこと(echoしたい場合は、メソッドの処理内容にechoを記載するということ)

 

はい、ということで今日はPHPをごりごり進めていきましたが、全体像を掴みながら進められている感じがして、ストレスなく勉強できています^^

 

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!

27日目:PHP学習 道場で定着具合を確認!(数値計算、条件分岐、配列操作(foreach/for)

<学習日>

27日目

<学習内容>

① PHP 道場(0-63%):道場で定着具合を確認!(数値計算、条件分岐、配列操作(foreach/for)

<参考>

Progateレベル:134

 

<学習内容詳細>

① PHP 道場(0-63%):道場で定着具合を確認!(数値計算、条件分岐、配列操作(foreach/for)

f:id:yakuzen_kokoro:20200730222918p:plain

f:id:yakuzen_kokoro:20200730222926p:plain

はい、ということで、今日は昨日までに勉強したPHP Ⅰの内容を、実際の課題に従って0からcodeを書きながら、定着度合いを確かめていきます^^

 

最初はechoで出力できますか?というところから始まり、配列の操作が入ってくると、だんだんと歯ごたえが出てきて、「うーん」と唸りながら、繰り返し関数を捻りだす感じでした!

 

答えは一度も見ないで、なんとか目的のアウトプットが出せたので、1周目としては及第点と思います^^

 

以下、今回学習して得たポイントを、具体的なcode例を出しながら整理すると以下のとおりです。

 

・変数をテキストのアウトプットに組み込みたい場合は2通りのcodeがある。

たとえば、変数$fruitをバナナと定義して、「私はバナナが好きです」と出力したい場合は、以下のようなcodeを書けばよい

 

$fruit = 'バナナ'

ex.1) echo '私は'.$fruit.'が好きです';
ex.2) echo " 私は{$fruit}が好きです";


・変数を用いた計算結果をテキストにアウトプットに組み込みたい場合は、わざわざ別の変数に計算結果を格納する必要はない

たとえば、$A=2、$B=5として、$A*$Bの結果をアウトプットしたい場合は、以下のどちらでもOK。私は後者

 

ex.1)

$C = $A * $B
echo '計算結果は'.$C.'です';

 

ex.2)

echo '計算結果は'.$A*$B.'です';

 

ちなみ、これはif文の条件式でも同じ。ただ、プログラミングの世界では、計算結果は一度別の新しい変数に格納するのが一般的な感じはする。

今回みたいに簡単な例であれば、構わないかもしれないが、codeが長くなると、意味不明になってしまうのかもしれない。


・配列の中の数字の合計を計算する方法で、配列の中の数字や個数が変化しても、問題ないようにするcodeについて

たとえば、$prices=[任意の数字が任意の個数]として、前者が解答、後者が私の答え。出力は一緒だった。どうやら、for関数が好きらしい。

foreachでも、1周目の結果を引き継いで、2周目の計算をするような記述が可能なのがわかったのは、勉強になった。

 

ex.1)

$totalPrice = 0;

foreach ($prices as $price) {
$totalPrice += $price;
}
echo '合計金額は'.$totalPrice.'円です';

 

ex.2)
$sum=0;

for($i=0; $i<count($prices); $i++) {
$sum += $prices[$i];
}
echo "合計金額は{$sum}円です";

 

今日は繰り返し関数と、配列の部分を自力で捻りだす訓練が出来て、とても有意義に勉強を進めることが出来ました^^

 

ではでは、1日でも長く続けられるように頑張っていきます^^

同志の方、一緒に頑張っていきましょう!