はじめに
PHPの備忘録です。
過去に自己学習でまとめたメモを最近友人に共有したので
どうせならQiitaにもあげようと思い至りました
私個人は普段PHPを書いていません x
基本編
phpは文末に;
が必要
変数
$sample = 1;
定数
const SAMPLE = 1;
配列
$array = [1,2,3,4,5];
$names = array('雨', '雪', '晴')
$array[] = 6 // 配列の最後に追加
array_push($array, 7) // 配列の最後に追加(複数追加可能)
array_pop($array) // 最後を削除
array_shift($array) // 最初を削除
オブジェクト
$scores = array(
"数学" => 70,
"英語" => 90,
"国語" => 80
);
$scores["国語"] += 5;
echo $scores["国語"];
条件分岐
$sample = "田中";
if ($sample === "田中") {
echo "田中です";
} elseif ($sample === "山田") {
echo "山田です";
} else {
echo "誰だかわかりません"
}
繰り返し処理
// for文
for ($i = 1; $i <= 100; $i++) {}
//while文
$i = 0;
while ($i < 10) {
echo $i
i++;
}
// foreach
$ns = [1,2,3,4,5]
foreach ($ns as $n) {
echo $n
}
foreach ($ns as index => value) {
// 連想配列ならindexにkeyが入る
// indexは省略可能
}
繰り返し制御
for
やif
と組み合わせて使う
// 処理を中断する
break
// スキップする
continue
三項演算子
// 条件式 ? trueの時: falseの時
const val1 = 1 > 0 ? "trueです" : "falseです";
console.log(val1); // trueです
テンプレートリテラル
式展開
let $name = "いちご";
let $cost = 100;
echo "{$name}は{$cost}円です"
例外処理
try() {
} catch() {
}
基本編2
switch
ifが複雑になる時に使う
$num = tee;
switch($tee) {
case "baru":
echo "baruです";
break;
default:
echo "野良です";
break;
}
関数
// jsの関数宣言と一緒
function add(n1=1, n2=2) {
echo n1 + n2
}
add()
組み込み関数
strlen('Apple'); // 文字列の長さを返す
count($array); // 配列の長さを返す
rand(1, 4); // 指定の範囲の中でランダムな数字を返す
max($array) // 最高値
array_sum($array) // 合計値
floor(num) // 小数点以下切り捨て
($bob instanceof Person)
end ○○ 構文
foreach
をHTMLに埋め込む際に特殊な書き方ができる
可読性を上げることができる
<?php $words = array('apple', 'banana', 'orange'); ?>
<?php foreach ($words as $word): ?>
<p><?php echo $word ?></p>
<?php endforeach ?>
// ifも同様
<?php if($age >= 20): ?>
// 処理
<?php endif ?>
// for
<?php for ($i = 0; $i < 100; $i++): ?>
// 処理
<? php endif ?>
クエリパラメータ
クエリ情報
//?hogeで繋げて指定できる
<a href="show.php?name=<?php ?>">
// 遷移先では下記のように受け取る
echo $_GET['name']
// 下記のようなオブジェクトで渡ってくる
array (
'name' => 'HOGE'
)
ファイルの分割
// 下記で読み取り可能
<? require_once('data.php') ?>
// 下記で分けると良さそう
- classの定義
- インスタンス化
- mainのファイル
Class
class Person {
// プロパティは初期値の設定もできる
// 子クラスからも参照する場合protectedにする
private $name;
public $age;
// protected $tall
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function hello() {
echo '私は'.$this->name.'です'.$this->age.'です'。
}
}
// インスタンス化
$bob = new Person("bob", 18)
// ->でプロパティにアクセス (属性/メンバ変数)
$bob->age = 22
echo $bob->hello()
継承
親クラスのプロパティとメソッドを引き継ぐ
class Man extends Person {
// 独自のプロパティも定義可能
public $tall;
public function __construct($name, $age, $tall) {
// 親クラスのメソッドを呼び出す
parent::__construct($name, $age)
$this->tall = $tall
}
}
// 親クラスのメソッドを利用
echo $bob->hello()
staticプロパティ・メソッド
クラスメソッドのこと
class Person {
// staticをつける
private static $count = 0 // 初期値省略可
public function __construct() {
// selfはクラス自身を指す
// 初期化のたびにcountがupする
sefl::$count++;
}
// staticをつける getter
public static function getCount() {
return self::$count
}
}
// publicなら下記でstaticプロパティにアクセス可能
Person::$count.'品'
echo Person::getCount()
カプセル化
ユーザーに必要な部分を隠して触らせない
クラスのプロパティとメソッドへのアクセスを制限すること
getter
// プロパティをprivateにすると値を参照できない
// getterメソッドを定義して参照できるようにする
public function getName() {
return $this->name;
}
setter
public function setName($name) {
$this->name = $name
}
終わりに
BASIC認証やformの書き方もまとめているのですが、長くなってしまうので基本の部分のみ投稿しました。