組み込み関数 33
・count関数
・fopen関数fclose関数
・unset関数
・is_xxxxx関数データ型を判定
ファイルシステム関数
ファイルシステム関数とはファイルの操作(情報の取得、読み書き)をするための関数です。
![](https://ntorelabo.com/wp-content/uploads/2022/09/24510976_m-1024x576.jpg)
fopen
ファイルに書き込みする場合、まずファイルを「開く」必要があり、fopen関数を使います。
fopen($filename, $mode)
$filename:ファイルのパス
$mode:オープンモード
戻り値:成功時→ファイルポインタ、失敗時→false
モード | 内容 |
---|---|
r | 読み込み専用 |
r+ | 読み込み、書き込み可 |
w | 書き込み専用(ファイルの内容を上書き) |
w+ | 読み込み、書き込み可(ファイルの内容を上書き) |
a | 書き込み専用(ファイルの内容を追記) |
a+ | 読み込み、書き込み可(ファイルの内容を追記) |
fclose
ファイルの操作が完了したら、fclose関数でファイルのクローズをします。
fclose($handle);
$handle:ファイルポインタ
fwrite
ファイルに書き込みをするとき、fwrite関数を使います。
fwrite($handle, $string[, $length]);
$handle:ファイルポインタ
$string:書き込む文字列
$length:文字列の長さ
flock
ファイルの同時書き込みが行われないよう、あらかじめflock関数でファイルのロックをします。
flock($handle, $operation);
$handle:ファイルポインタ
$operation:ロックモード
![](https://ntorelabo.com/wp-content/uploads/2023/06/230708_illust_フォーム-1024x768.png)
mb_strlen関数
strcasecmp()
strcmp()
※数字場合一文字目比較
・変換モードは 4
mb_convert_case関数
MB_CASE_UPPER | 小文字→大文字 |
MB_CASE_LOWER | 大文字→小文字 |
MB_CASE_TITLE | 先頭文字を大文字に変換 |
MB_CASE_○○_SIMPLE | 文字列長が変化しない変換 |
mb_substr関数 文字位置で指定
$str = 'PHPプログラミング'
print mb_substr($str, 3, 4);
//結果 プログラ
mb_strstr関数 特定の文字列が見つかった場所を起点に取得
str_replace関数
explode関数
print_r(explode("\t", $data))
// テキストをタブで分割
mb_strpos関数 最初の位置を返す
mb_strrpos関数 最後に現れた位置を返す
mb_substr_count関数
str_contains関数
str_starts_with関数 先頭に位置する
str_ends_with関数 末尾に位置する
if (str_contains('Hallo World', 'Hallo')) {
echo 'Halloはふくまれています';
} else {
echo 'Halloはふくまれていません';
}
// (true/falseを返します) 結果 Halloはふくまれています
trim関数
ltrim関数 左
rtrim関数 右
※数値は小数点以下1桁まで表示
printf(‘%の気温は%.1f℃です。’, ‘東京’, 32.468);
f:引数を浮動小数点で表現
mb_convert_kana関数
r | 全角英文字 → 半角英文字 |
R | 半角英文字 → 全角英文字 |
n | 全角数字 → 半角数字 |
N | 半角数字 → 全角数字 |
a | 全角英数字 → 半角英数字 |
A | 半角英数字 → 全角英数字 |
s | 全角スペース → 半角スペース |
S | 半角スペース → 全角スペース |
k | 全角カタカナ → 半角カタカナ |
K | 半角カタカナ → 全角カタカナ |
V | 濁点付きの文字を1文字に変換 |
$str = 'サーバサイド';
print mb_convert_kana($str, 'KV');
//結果 サーバサイド
mb_convert_encoding関数
mb_send_mail関数
![](https://ntorelabo.com/wp-content/uploads/2022/09/24510976_m-1024x576.jpg)
![](https://ntorelabo.com/wp-content/uploads/2023/02/Frame-27.png)
count関数
array_merge関数
$ary1 = [1, 3, 5];
$ary2 = [2, 4, 6];
$result = array_merge($ary, $ary2);
print_r($result);
// 結果:Array([0]=>1 [1]=>3 [2]=>5 [3]=>2 [4]=>4 [5]=>6)
implode関数
array_push 末尾に追加
array_pop 末尾から除去
array_unshift 先頭に追加
array_shift 先頭から除去
array_splice関数
// array splice(操作対象の配列, 削除箇所, 取り出す要素数, 挿入する値(配列))
array_splice($data1, 1, 0, 20)
array_slice関数
array_slice(操作する配列, 開始位置, 取り出す要素数, );
・配列に特定の要素が存在するか確認する関数
- array_search関数
- in_array関数
$data = ['PHP', 'Java', 'PHP']
var_dump(array_search('PHP', $data));
結果int(0) ※最初の位置だけ返します
sort関数
![](https://ntorelabo.com/wp-content/uploads/2023/07/image-6.png)
array_walk関数
array_map関数
array_filter関数
array_reduce関数
・すべてを取得する
if (preg_match('/[0-9]{3}-[0-9]{4}/', $str, $data)) {
print $data[0]
}
- preg_match_all関数
preg_replace関数
preg_split関数
<?php
$data 1 = data(‘Y/m/d H:i:s’);
$data 1 = $_SERVER[‘SCRIPT_NAME’];
$data 1 = $_SERVER[‘HTTP_USER_AGENT’];
$file = 2 (‘access.csv’, ‘3‘) 4 (‘ファイルを開けませんでした’);
5($file, LOCK_EX);
6($file, 7(“8“, $data) . 9);
5($file, LOCK_UN);
10($file);
<?php
$data [] = data('Y/m/d H:i:s');
$data [] = $_SERVER['SCRIPT_NAME'];
$data [] = $_SERVER['HTTP_USER_AGENT'];
$file = fopen ('access.csv', 'a') or die('ファイルを開けませんでした');
flock($file, LOCK_EX);
fwrite($file, implode(",", $data) . "\n");
flock($file, LOCK_UN);
fclose($file);
![](https://ntorelabo.com/wp-content/uploads/2023/06/230708_illust_フォーム-1024x768.png)
curl_getinfo()
$info = curl_getinfo($ch);
var_dump($info);
![](https://ntorelabo.com/wp-content/uploads/2023/07/image-4.png)
オブジェクト指向構文 33
・例外処理マルチキャッチ
・名前空間インポート
- コンストラクターとは逆に、オブジェクトが破棄されるタイミングで実行されます。
__destruct()
静的メソッドはクラス自体で保持しているメソッドです。
インスタンス化しなくても利用できます。
$thisをつかうことができません。クラス名::静的メソッド名()
- クラス定義のときに、クラス内のプロパティやメソッドにアクセスしたい場合に使用
- インスタンス化したものを参照?
オブジェクトがインスタンス化されるときに自動的に呼び出されるメソッドです。
__constructで定義されます。
name(string型)、price(int型)プロパティをもつMenuクラスを定義してください
<?php
class Menu {
public function __construct(
public string $name,
public int $price
) {}
}
(静的メソッド、クラス名はTestClass)
<?php
class TestClass {
public static function square(float $width, float $height): float {
return $width * $height;
}
}
class サブクラス名 extends スーパークラス名 {
…メソッド/プロパティなどの定義…
}
- 多重継承
- 認めていない→単一継承
::
parent::__construct()
・2 クラスレベルで定義
public final function メソッド名 : void
final class サブクラス名 exends スーパークラス名
・またそれを含むクラスは
- 抽象メソッド
- 抽象クラス
<?php
abstract class 抽象クラス名
アクセス修飾子 abstract function メソッド名: 戻り値のデータ型;
配下のメソッドがすべて抽象メソッドであるクラス
※オーバーライドされる前提のメソッド
- 配置できるのは抽象メソッドの(中身を持つメソッド、プロパティは×)
- abstract修飾子不要(明らかに抽象メソッドのため)
- アクセス修飾子指定不可、(普通割愛するがpublicは可)
- 規則ではないが、IFigure、FigureInterfaceのように接頭辞/接尾辞を指定
・実装クラスでの実装
interface インターフェイス名 {
抽象メソッド、定数の定義
}
class 実装クラス名 implements インターフェイス名 {
クラスの本体
}
・トレイトを利用してください
trait トレイト名 {
…プロパティ、メソッドの定義…
}
use トレイト名
コードを再利用、多重継承と同様なことができます。
trait トレイト名1{
処理
}
trait トレイト名2{
処理
}
class クラス名{
use トレイト名1, トレイト名2
}
try {
// 例外が発生するかもしれないコード
} catch(発生するかもしれない例外の種類 例外を受け取る変数名) {
// 例外発生時の処理
} finally {
// 例外の有無にかかわらず実行する処理 }
いずれかに合致した場合に捕捉処理
try {
// 任意
} catch(HogeException | FooException | BarException $e) {
// 例外発生時の処理
}
<?php
try {
//throw new 例外クラス名(引数)でインスタンスを作成
throw new Exception('例外処理発生');
} catch(Exception $e) {
//getMessageで例外メッセージを取得
echo $e->getMessage();
}
?>
PHP8以降でthrowは式として利用できます
$i = -10;
print $i > 0 ? $i : throw new Exception('$iは正数でなければならない');
![](https://ntorelabo.com/wp-content/uploads/2023/04/スクリーンショット-2023-04-12-20.37.59.png)
__call
__callStatic
namespace 名前空間名
をファイルの先頭で定義
require_once 'ファイル名';
use 名前空間名;
・ずべてのふぁいる
オートローダー spl_autoload_register関数
・任意のファルダーに適用
- php.ini
- .htaccess