학습 기록 : PHP 그 2

8482 단어 PHPProgate

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 ;
   } 
}
?>

좋은 웹페이지 즐겨찾기