LoginSignup
0
2

More than 1 year has passed since last update.

PHP基礎

Posted at

PHPの宣言

HTMLでPHPを宣言するには<?php ?>内に記述する。
また1行の場合は、末尾の;を省略できる。

sample.php
<?php
    echo "Hello World!";
    echo "Hello PHP!";
?>

// 1行の時は、セミコロン不要
<?php echo "Hello World!" ?>

変数

変数の宣言と使用

sample.php
<?php
    $name = "Bob" ;
    echo $name ;

    echo "私の名前は{$name}です";
?>

計算

加減乗除

sample.php
<?php
    echo a + b ;
    echo a - b ;
    echo a * b ;
    echo a / b ;
    echo a % b ;
?>

簡略化した書き方

sample.php
<?php
    $x = $x + 10;    $x += 10;
    $x = $x - 10;    $x -= 10;
    $x = $x * 10;    $x *= 10;
    $x = $x / 10;    $x /= 10;
    $x = $x % 10;    $x %= 10;
?>

インクリメント、デクリメント

sample.php
<?php
  // 後置演算
    $x += 1;    $x++;
    $x -= 1;    $x--;

  // 前置演算
    $x += 1;    ++$x;
    $x -= 1;    --$x;
?>

文字列結合

sample.php
<?php
    $x = "文字";
    $y = "連結";
    echo $x.$y;

  // 省略記述
    $x .= "連結";
?>

条件分岐

sample.php
<?php
    if ($x > 10) {
        // true
    } elseif (!($x <= 5)) {  //否定
        // true
    } else {
        // false
    }
?>

比較演算子

条件 記法
より大きい、より小さい <、>
以上、以下 <=、>=
等しい ==
等しくない !=

論理演算子

条件 記法
かつ &&
または

その他の判定

条件 記法
特定のクラスのインスタンスがどうか インスタンス instanceof クラス名

switch文

sample.php
<?php
    switch($coin){
        case 0:
            echo "表";
            break;
        case 1:
            echo "裏";
            break;
        default:
            echo "エラー";
            break;
    }
?>

配列

sample.php
<?php
  // 配列の生成
    $names = array("John", "kate", "Bob");
    echo $names[0];

  // 配列の末尾に追加
    $names[] = "Mary";

  // 値の上書き
    $names[1] = "Jane";
?>

連想配列

sample.php
<?php
  // 配列の生成
    $user = array(
                       "name" => "わんこ",
                       "age" => 14,
                       "gender" => "male"
                   );
    echo $user["name"];

  // 値の追加
    $user["level"] = "beginner";

?>

for文

sample.php
<?php
    for($i = 1; $i <= 100; $i++){
        if($i % 3 == 0){
            continue;
        }elseif($i >90){
            break;
        }
        echo $i ."<br>";
    }
?>

foreach文

sample.php
<?php
    $towns = array("東京", "大阪", "京都");
    foreach($towns as $town){
        each $town." ";
    }

    $user = array(
                       "name" => "わんこ",
                       "age" => 14,
                       "gender" => "male"
                   );
    foreach($user as $key => $value){
        echo $key." ".$value." ";
    }
?>

while文

sample.php
<?php
    $i = 1;
    while($i <=100){
        echo $i;
        $i++;
    }
?>

HTMLに埋め込む場合の書き方(推奨)

HTML内でfor文if文など記述するときは、可読性を上げるため単一行で<?php ?>を完結させるようにした方が良い。

  1. 先頭の{:にする
  2. 末尾の}end〇〇にする(endfor,endif,endswitchなど)
sample.php
<?php $towns = array("東京", "大阪", "京都") ?>

<?php foreach($towns as $town): ?>  // { → :
    <p><?php echo $town." " ?></p>
<?php endforeach ?>                 // } → end〇〇

関数

sample.php
<?php
  // 関数生成
    function printCircleArea($radius){
        echo $radius * $radius;
    }

    function getSum($num1, $num2){
        return $num1 + $num2;
    }

  //  関数呼び出し
    printCircleArea(10);
    $sum = getSum(1,3);

?>

クラス

sample.php
<?php
  // クラス
    class Menu{
        public $name;

      //コンストラクタ
        public function __construct(){
            $this->name;
        }

        public function hello(){
            echo '名前:'.$this->name;
        }
    }

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

  // プロパティ値の設定、呼び出し
    $curry->name = 'CURRY';
    echo $curry->name;

  // メソッド呼び出し
    $curry->hello();
?>

プロパティ=インスタンスが持つデータのこと
メソッド =インスタンスに関連する処理(関数)のこと

他ファイルの読み込み(インポート)

menu.php
<?php
    class Menu{
        public $name;

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

        public function hello(){
            echo '名前:'.$this->name;
        }
    }
?>
data.php
<?php
    require_once("menu.php");
    $curry = new Menu("CURRY");
?>
index.php
<?php require_once("data.php") ?>
<body>
    <p> <?php echo $curry->name ?> </p>
</body>

カプセル化

プロパティをpublicprivateにし、gettersetterで読み書き込みするようにする。

menu.php
<?php
    class Menu{
        private $name;  //public → private
              :
      // getter
        public function getName(){
            return this->name;
        }
      // setter
        public function setName($name){
            $this->name = $name;
        }
    }
?>
data.php
<?php
    require_once("menu.php");

    $curry = new Menu();
    $curry->setName("CURRY");  //setterでプロパティ設定
?>
index.php
<?php require_once("data.php") ?>
<body>
    <p> <?php echo $curry->getName() ?> </p> // getterでプロパティ取得
</body>

クラスプロパティ

個々のインスタンスがもつデータ(プロパティ)ではなく、クラスがもつデータをクラスプロパティという。
クラスプロパティはstaticを用いて定義する。
クラスプロパティにアクセスする場合はクラス名::$クラスプロパティ名と定義する(publicの場合)
クラス内でクラスプロパティにアクセスする場合はself::$クラスプロパティ名と定義する

sample.php
<?php
    class Menu{
      // クラスプロパティ
        private static $count = 4;  //static付与

        public function __construct(){
            self::$count++;              //クラス内でのアクセス
        }

        public static function getCount(){  //static付与
            return self::$count;
        }
    }

    echo "メニュー:".Menu::$count."品";  // クラスプロパティの呼び出し(publicの場合)
    echo "メニュー:".Menu::getCount()."品";  //クラスプロパティの呼び出し
?>

継承

継承を用いて新しく子クラスを定義するときは、「class 子クラス名 extends 親クラス名」のように書く

sample.php
<?php
    class Drink extends Menu{
       :
    }
    $coffee = new Drink("COFFEE", 600, .....);
    echo $coffee->getName();
?>

オーバーライド

親クラスに対するメソッドの上書きを「オーバーライド」と言う。
オーバーライドの際に親クラスで定義したメソッドを呼び出したいときには、「parent::メソッド名」とすることで親クラスのメソッドを実行することができる。

drink.php
<?php
    class Drink extends Menu{
        private $type;

        public function __construct($name, $price, $image, $type){
            parent::__construct($name, $price, $image,);  // 親クラスの呼び出し
            this-> type = $type;
        }
    }
?>
menu.php
<?php
    class Menu{
        protected $name;
        protected $price;
        protected $image;

        public function __construct($name, $price, $image){
            this-> name = $name;    
            this-> price = $price;
            this-> image = $image;
        }
    }
?>
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2