학습 기록 : PHP 그 2
9월 1~2일 PHP
이번 3장은 이미지와 같은 페이지를 만드는 것이 목표
・메뉴 4품의 4의 부분은 메뉴수에 맞추어 바뀌도록
인스턴스가 생성될 때마다 1 가산해, 그 결과를 숫자로서 표시하도록(듯이)
・음료는 「아이스・핫의 정보」, 음식은 「매운맛의 정보」가
각각 표시되도록 파일을 나누어 정의
계속 4장이지만
・상품명을 클릭으로 날 수 있는 링크처 페이지의 생성
・클릭한 상품에 맞춘 리뷰 페이지의 작성
· 리뷰어 정보가 중복되지 않는 구조 구축
아니... 정말, 이거 너무 어렵습니다...
개인 메모
클래스 속성
개별 인스턴스가 아닌 클래스가 갖는 데이터(클래스 속성)
의 정의와 접근방법에 대하여
menu.php <?php
class Menu {
//クラスプロパティを定義する場合は「static クラスプロパティ名」とする
//ここのインストラクタに関与させない場合には、staticをつける
private static $count = 0 ;
//クラス内でクラスプロパティにアクセスする場合は「self::$クラスプロパティ名」とする
self::$count ++ ;
}
?>
index.php<?php
//クラスプロパティにアクセスする クラス名::$クラスプロパティ名
echo Menu::$count
?>
상속된 부모 클래스의 메서드 호출(재정의)
drink.php <?php
//別のクラスを継承する場合は 「class 子クラス名 extends 親クラス名」とする
class Drink extends Menu {
private $type;
public function __construct($name, $price, $image, $type) {
// 親クラスのコンストラクタを呼び出す場合は「parent::メソッド名」
parent::__construct($name, $price, $image) ;
$this->type = $type;
}
?>
PHP 내에서 if 또는 for를 사용하는 경우
if 문, for 문, while 문, witch 문 foreach 문을 작성하는 경우,
"endif""endfor""endwhile""endswitch""endforeach"를 사용하여 닫기
index.php// $menuで呼び出されたクラスがドリンクであれば実行したい
// → instanceof で判定させる
//改行を含まない<?php ?>の場合は、<?php : ?>のようにコロンを使用する
<?php if ($menu instanceof Drink): ?>
<p class="menu-item-type"><?php echo $menu->getType() ?></p>
//<?php else : ?>で条件分岐をさせているが、:を使用することに注意
<?php else : ?>
<p><?php echo '辛さ:'. $menu->getSpiciness() ?></p>
//<?php if ?>を閉じるために<?php endif ?>を置く。:は使用しない。
<?php endif ?>
쿼리 정보 추가
URL의 말미의 「?」이후에 「키명=값」의 형태로 간단한 정보를 올릴 수 있다.
이를 쿼리 정보라고 하며 쿼리 정보를 사용하여 링크된 페이지에 정보를 전달할 수 있습니다.
Q. 왜 정보를 전달해야 하는가?
A. 쿼리 정보에 들어있는 내용에 따라 표시되는 내용을 변경하기 위해 (아마)
index.php<a href= "show.php?name= <?php echo $menu->getName()?> " >
<?php echo $menu->getName() ?>
</a>
show.php<?php
// クエリ情報の値(?以降の情報)を受け取るには、$_GET['キー名']で定義する。
$menuName = $_GET['name'] ;
// 第2引数にはクエリ情報に入力された商品名が入り、第1引数は配列化されたmenusの値が順番に入る
// findByNameのクラスメソッドでは、クエリ情報と配列の一致した値を戻り値としている
$menu = Menu::findByName($menus, $menuName);
?>
show.php<?php
class Menu {
…
//getreviewsに$reviewsForMenuの値が戻り値として入る。
public function getReviews($reviews) {
// 空の配列
$reviewsForMenu = array() ;
foreach($reviews as $review) {
if ($review->getMenuName() == $this->name) {
// $reviewsForMenu[]の配列の末尾に値を追加する。
//最終的に$reviewsForMenuの配列には、特定の商品名のreviewがすべて入った状態になる。
$reviewsForMenu[] = $review ;
}
}
return $reviewsForMenu ;
}
}
?>
Reference
이 문제에 관하여(학습 기록 : PHP 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IKARIN_HAYAMI/items/a286c064e65936ac1383
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?php
class Menu {
//クラスプロパティを定義する場合は「static クラスプロパティ名」とする
//ここのインストラクタに関与させない場合には、staticをつける
private static $count = 0 ;
//クラス内でクラスプロパティにアクセスする場合は「self::$クラスプロパティ名」とする
self::$count ++ ;
}
?>
<?php
//クラスプロパティにアクセスする クラス名::$クラスプロパティ名
echo Menu::$count
?>
<?php
//別のクラスを継承する場合は 「class 子クラス名 extends 親クラス名」とする
class Drink extends Menu {
private $type;
public function __construct($name, $price, $image, $type) {
// 親クラスのコンストラクタを呼び出す場合は「parent::メソッド名」
parent::__construct($name, $price, $image) ;
$this->type = $type;
}
?>
// $menuで呼び出されたクラスがドリンクであれば実行したい
// → instanceof で判定させる
//改行を含まない<?php ?>の場合は、<?php : ?>のようにコロンを使用する
<?php if ($menu instanceof Drink): ?>
<p class="menu-item-type"><?php echo $menu->getType() ?></p>
//<?php else : ?>で条件分岐をさせているが、:を使用することに注意
<?php else : ?>
<p><?php echo '辛さ:'. $menu->getSpiciness() ?></p>
//<?php if ?>を閉じるために<?php endif ?>を置く。:は使用しない。
<?php endif ?>
<a href= "show.php?name= <?php echo $menu->getName()?> " >
<?php echo $menu->getName() ?>
</a>
<?php
// クエリ情報の値(?以降の情報)を受け取るには、$_GET['キー名']で定義する。
$menuName = $_GET['name'] ;
// 第2引数にはクエリ情報に入力された商品名が入り、第1引数は配列化されたmenusの値が順番に入る
// findByNameのクラスメソッドでは、クエリ情報と配列の一致した値を戻り値としている
$menu = Menu::findByName($menus, $menuName);
?>
<?php
class Menu {
…
//getreviewsに$reviewsForMenuの値が戻り値として入る。
public function getReviews($reviews) {
// 空の配列
$reviewsForMenu = array() ;
foreach($reviews as $review) {
if ($review->getMenuName() == $this->name) {
// $reviewsForMenu[]の配列の末尾に値を追加する。
//最終的に$reviewsForMenuの配列には、特定の商品名のreviewがすべて入った状態になる。
$reviewsForMenu[] = $review ;
}
}
return $reviewsForMenu ;
}
}
?>
Reference
이 문제에 관하여(학습 기록 : PHP 그 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/IKARIN_HAYAMI/items/a286c064e65936ac1383텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)