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 ?>
を完結させるようにした方が良い。
- 先頭の
{
→:
にする - 末尾の
}
→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>
カプセル化
プロパティをpublic
→private
にし、getter
setter
で読み書き込みするようにする。
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;
}
}
?>