🍊
PHPのClassという概念についての備忘録(続)
前回まで
インスタンスという概念が出て来たあたりから???が止まらなくなってしまったので、Gemini先生に「小学生にでも分かるように優しく解説をしてもらった」
現状理解していること
動画講義を通して現状理解したこと。
Classだけでは何もできないということ
Classは設計図とイコールのものとされており、そのものだけでは何もできない。Classではインスタンスがどんな情報を持ち、どんな機能を持っているかを定める場所。
インスタンス
インスタンスはClassという設計図をもとに作られた実体のこと。インスタンスはClassで定義されたプロパティやメソッドを持っているが、プロパティの中身(値)はインスタンスごとに異なる。
動画講義の続き
ProductというClassの中にインスタンスを作成。またそれぞれどのような処理をするかを定義。
<?php
class Product {
private $id;
private $name;
private $price;
private $image;
public function __construct($id, $name, $price, $image) {
$this->id = $id;
$this->name = $name;
$this->price = $price;
$this->image = $image;
}
public function getName() {
return $this-> name;
}
public function getId() {
return $this-> id;
}
public function getPrice() {
return $this-> price;
}
public function getImage() {
return $this-> image;
}
}
?>
連想配列の書き換え
連想配列に入れていたデータをインスタンスの中に書き換える。
$products = [
[
"id" => "avocado",
"name" => "アボカド",
"price" => 230,
"image" => "./images/image_1.jpg"
],
[
"id" => "orange",
"name" => "オレンジ",
"price" => 1000,
"image" => "./images/image_2.jpg"
],
[
"id" => "lemon",
"name" => "レモン",
"price" => 220,
"image" => "./images/image_3.jpg"
],
[
"id" => "pineapple",
"name" => "パイナップル",
"price" => 230,
"image" => "./images/image_4.jpg"
]
]
↓これを
<?php
require_once 'classes/product.php';
$products = [
new Product("avocado", "アボカド", 230, "./images/image_1.jpg"),
new Product("orange", "オレンジ", 1000, "./images/image_2.jpg"),
new Product("lemon", "レモン", 220, "./images/image_3.jpg"),
new Product("pineapple", "パイナップル", 500, "./images/image_4.jpg")
];
?>
index.phpの書き換え
連想配列からecho $product["image"]などとしていたものをインスタンスで書き換える。
<div class="cards-container">
<?php foreach ($products as $product): ?>
<div class="card">
<img class="card-image" src="<?php echo $product->getImage(); ?>" alt="">
<p class="card-title"><?php echo $product->getName(); ?></p>
<div class="flex justify-between">
<p class="card-price"><?php echo displayPrice($product->getPrice()); ?></p>
<input form="cart" min="0" name="<?php echo $product->getId(); ?>" class="item-number" type="number" value="0">
</div>
</div>
<?php endforeach; ?>
</div>
まとめ
連想配列で指定していたID、商品名などをインスタンスを作成したことで、コード量が減った。
まだ完全に理解しきっていないけど、明日以降続きを学習していく。
(コーディングしたい)
Discussion