php

php

PHP入門 VSCode+PHP Debug拡張によるデバックする方法

VSCodeでPHP Debug拡張することで、デバック作業を効率化できる方法を記載します。デバック機能の有効化VSCodeでPHPのデバックを有効にするには、Xdebug(PHPの拡張ライブラリ)とPHPDebug拡張(VSCodeの拡張機能)をあらかじめインストールする必要があります。1、XdebugのインストールXdebugはデバック機能を提供するPHPの拡張ライブラリです。PHP Debu...
php

PHP入門 オブジェクト指向 クラスの自動ローディング

クラスは複数のスクリプトから再利用するというその性質上、1クラスを1ファイルで管理すべきです。1クラス1ファイルなら無駄なクラスを読み込む必要もなく、ファイル管理という観点からも整理しやすくなります。ただ、1クラス1ファイル方式で作成していくと、扱うクラスが増えてきた場合、クラスファイル1つ1つをrequire_once命令を呼び出さなくてはなりません。spl_autoload_register関...
php

PHP入門 オブジェクト指向 名前空間

名前空間とは、クラスや関数の苗字や所属のようなものです。たくさんのクラスや関数を定義すると、名前が思わないところで衝突することがあります。そのような場合、従来であれば名前そのものを長くする方法しかありませんでした。名前空間を使えば、クラス名はかなりシンプルなものにすることができます。名前空間の基本名前空間を定義するのは、namespace命令です。構文:namespace命令namespace 名...
php

PHP入門 オブジェクト指向 マジックメソッド

PHPのマジックメソッド(__get/__set/__isset/__unset/__call/__callStatic/__toString/__invoke/__clone/__debuginfo)について解説しています。マジックメソッドとはPHPでは、あらかじめ特定の役割を与えられたメソッドとして、マジックメソッドが用意されています。たとえば、__constructや__desctructも...
php

PHP入門 オブジェクト指向 オブジェクトの操作

オブジェクトの代入や比較、反復処理について解説しています。オブジェクトの代入変数の代入は値渡しが既定ですが、オブジェクト変数だけは例外的に参照渡しが既定です。<?phprequire_once 'Person.php';$p1 = new Person('太郎','山田');$p2 = $p1; //オブジェクトを代入$p2->firstName = '花子';$p2->lastName = '工...
php

PHP入門 オブジェクト指向 トレイト

トレイト(Trait)とは、再利用可能なコード(メソッド/プロパティ)をまとめて切り出しておくための仕組みです。「断片的なクラス」と言ってもよいかもしれません。トレイトとして切り出したコードは、あとから個々のクラスに取り込むことが可能です。トレイトの基本MachineTrait.php<?phptrait MachineTrait{ private string $starting = 'Star...
php

PHP入門 オブジェクト指向 ポリモーフィズム

ポリモーフィズムについて解説しています。ポリモーフィズムとはポリモーフィズムとは、同名のメソッドで異なる挙動を実現すること言います。Figure.php<?phpclass Figure{ //プロパティを定義(protected修飾子で制限) protected float $width; protected float $height; //コンストラクター(プロパティを初期化) public...
php

PHP入門 オブジェクト指向 継承

継承(Inheritance)とは、基になるクラスの機能(メソッド)を引き継ぎながら、新たな機能を追加したり、元の機能一部だけを修正したりする仕組みです。このとき、継承元となるクラスのことをスーパークラス(親クラス、基底クラス)、継承の結果できたクラスのことをサブクラス(子クラス、派生クラス)と呼びます。継承の基本継承するには、クラス定義の際にextendsキーワードでスーパークラスを指定します。...
php

PHP入門 オブジェクト指向 カプセル化

PHPのカプセル化(アクセス修飾子とアクセサーメソッド)について解説しています。カプセル化とはカプセル化(Encapsu-lation)とは、クラスの機能のうち、使い手に必要のない処理を隠してしまうことです。ブラックボックス化とも言います。アクセス修飾子クラスの世界で、不要な機能を隠す役割を担っているはアクセス修飾子です。PHPで利用可能なアクセス修飾子アクセス修飾子概要publicどこからでもア...
php

PHP入門 オブジェクト指向 クラス定義

PHPのクラス定義のクラス命名方法、プロパティ定義、メソッド定義、コンストラクター、デストラクター、静的メソッド、静的プロパティ、クラス定数について解説しています。クラスの定義クラスとは、関数や変数/定数を収めるための器です。クラスの構造構文:class命令class クラス名{ ・・・プロパティ/メソッドの定義}中身のない簡単なクラスを定義<?phpclass Person{ }定義したクラスの...
php

PHP入門 データベース トランザクション処理

PHPのトランザクション処理について解説します。トランザクション処理トランザクションを有効にするには、beginTransactionメソッドでトランザクション開始をします。また、処理の成否を例外として通知するためにPDO::ATTR_ERRMODEパラメーターをPDO::ERRMODE_EXCEPTIONに設定します。例:トランザクション処理<?phprequire_once './DbMana...
php

PHP入門 データベース パラメーター値のバインド

パラメーターのデータ型を宣言する(バイナリデータの操作)bindValueメソッドでは、パラメーターのデータ型を指定することができます。たとえばバイナリ型のパラメータを扱うようなケースでは、データ型を明示的に宣言する必要があります。例:photoテーブルに対してブラウザからアップロードされた画像を登録photoテーブルフィールド名データ型概要idINT写真ID(主キー/自動連番)typeVARCH...
php

PHP入門 データベース 結果セットの取得

結果セットとは、SQLのSELECT命令によって、1個または複数のテーブルから取り出されたレコード群を保持するために、メモリ上に用意された仮想テーブルのことを言います。1個のテーブルをまるごと結果セットとして取り出すこともありますが、テーブルの列または行を部分的に取り出したり、複数のテーブルを結合(加工)したりするのが一般的です。結果セットの取得方法例:結果セット取得<?php require_o...
php

PHP入門 データベース SQLクエリの発行

データベースにアクセスし、データを登録する方法を解説しています。入力値を元にデータベースに登録する画面の入力フォームで登録した値が、bookテーブルに挿入するサンプルテーブル情報:bookフィールド名データ型概要isbnVARCHEAR(17)ISBNコードtitleVARCHEAR(100)書名priceINT価格publishVARCHEAR(20)出版社publishedDATE刊行日sam...
php

PHP入門 データベースへの接続

PHPからデータベースに接続する方法を解説しています。データベース接続PHPアプリからデータベースを操作するには、まずデータベースに対して接続を確立する必要があります。<?php$dsn = 'mysql:dbname=test; host=127.0.0.1; charset=utf8';$usr = 'root';$passwd = 'test';try{ $db = new PDO($dsn...
php

PHP入門 リクエスト情報 アップロードの実装($_FILES)

$_FILESは、アップロードしたファイルに関する情報を取得するためのスーパーグローバル変数です。$_FILESを利用することで、ファイルのアップロード機能も直感的に作成できます。画像ファイルのアップロード例:画像ファイルをサーバーにアップロードするsample1.php<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>ファイルアッ...
php

PHP入門 リクエスト情報 セッション情報($_SESSION)

ユーザーがブラウザを開いている間だけ情報を維持したい場合には、クッキーではなく、セッション(Session)という仕組みを利用します。クッキーの問題点データがクライアント側で保存されるクッキーはクライアント側で管理されるデータです。クライアントの設定によってはそもそもクッキーを受け入れないようにすることも可能ですし、いったん保存されたクッキーをクライアント側で改ざんしたり削除したりすることもできま...
php

PHP入門 リクエスト情報 クッキー情報($_COOKIE)

クッキー(Cookie)とは、クライアント側に保存可能な小さなテキストのことです。通常、Webの世界ではサーバーがクライアント上のファイルを読み書きすることを許可していません。しかし、クッキーだけは唯一例外で、サーバーがクライアントに対して、任意のテキストを保存できます。クッキーを利用することで、クライアント単位で保持したい情報の管理が用意になります。クッキーの基本的な読み書き1度目のアクセスで入...
php

PHP入門 リクエスト情報 サーバー環境変数($_ENV)

$_ENVは、サーバー側に設定されている環境変数を取得するためのスーパーグローバル変数です。環境変数とは、コンピューター上にあらかじめ定義されたパラメーターのことで、プログラムを実行する際に参照するパスやオプション値などを設定します。たとえば、環境変数PATHは、コマンドラインなどでプログラムを呼び出す場合に既定で検索するフォルダを表します。<?phpprint $_ENV;既定の設定では、スーパ...
php

PHP入門 リクエスト情報 ヘッダー情報($_SERVER)

クライアントからサーバーに送信される情報は、クライアントの種類や対応する言語、リンク元のページなど、さまざまな情報が内部的に生成されて、サーバーに送信されています。このような不可視の情報のことをヘッダー情報(リクエストヘッダー情報)と言います。ヘッダー情報の種類chromeブラウザのデベロッパーツールで見たヘッダー情報HTTP通信で利用可能な主なヘッダー種類ヘッダー名概要一般Cache-Contr...
php

PHP入門 リクエスト情報 クエリ情報($_GET)

クエリ情報とは、URLの末尾「~?」以降に「キー名=値」のセットで付加される簡単な情報です。Yahoo、Googleのような検索エンジンでサイト検索したときに、ブラウザのアドレス欄に次のようなURLが表示されます。nopre_201201_m2cnew?以降がクエリ情報です。パス本体とクエリ情報は「?」で区切られ、複数のキーがある場合には「&」で連結されています。クエリ情報は、ポストデータと並んで...
php

PHP入門 リクエスト情報 ポストデータ($_POST)

ポストデータとは、<from method="POST">タグで定義されたHTMLフォームから送信されるデータの事です。テキストボックスやラジオボタン、選択ボックスなど、おなじみのフォーム要素から入力された情報は、サブミットボタンをクリックすることでサーバーに送信されます。ポストデータを取得するクライアントから送信されたポストデータを取得するのは、$_POSTの役割です。$_POSTの正体は「要素...
php

PHP入門 PHPでリクエスト情報の扱いについて

PHPでリクエスト情報を扱うスーパーグローバル変数について解説しています。リクエスト情報とはクライアントからサーバーに送信される情報のことをリクエスト情報と呼びます。また、HTTPとはサーバーとクライアントがお互いに通信する際に利用するプロトコルのことで、クライアントの要求に対してサーバーが応答するときの、情報のやり取りの手段を決めています。HTTPプロトコルのリクエスト/レスポンスは以下の表の部...
php

PHP入門 HTTPクライアントGuzzle

Guzzleとは、HTTP経由で外部の情報/サービスにアクセスするための手段を提供するライブラリです。ここでは、Guzzleライブラリの使用方法について解説しています。HTTP通信の基本指定されたアドレスにアクセスして取得したファイルをテキスト表示を例に解説します。例<?phprequire './vendor/autoload.php'; //➊//クライアントを生成$cli = new Guz...
php

PHP入門 外部ライブラリ(Composer)

PHPでは、標準であまたの関数/クラスライブラリが用意されているというだけではありません。本家以外の開発者が拡張ライブラリをさまざまに提供しており、目的特化した機能をシンプルなコードで実装できます。Composerは、これら拡張ライブラリ(パッケージ)をインストールするためのパッケージ管理ツールです。PHPライブラリを追加する場合、動作に必要な.phpファイルを手動で配置してもかまいませんが、パッ...
DirectoryIterator

PHP入門 DirectoryIteratorクラス

DirectoryInteratorクラスは、指定されたフォルダー配下のファイル情報にアクセスするためのクラスです。構文:DirectoryIteratorクラスnew DirectoryIterator(string $path)$pathフォルダーパスフォルダーを読み込む場合、まず、そのフォルダーを開かなくてはなりません。この行為を表すのが、DirectoryIteratorクラスのインスタン...
Datetimeクラス

PHP入門 DateTimeクラス 日付/時刻値の差分を取得する(diffメソッド)

diffメソッドで日付/時刻値の差を求めることができます。構文:diffメソッドDateTime::diff(DateTimeInterface $targetObject ): DateInterval|false$targetObject差分を求める日付/時刻値$absolute差の絶対値を返すかdiffメソッドの戻り値は、DateIntervalオブジェクトです。DateIntervalオブ...
Datetimeクラス

PHP入門 DateTimeクラス 日付/時刻値を加算/減算する(add/subメソッド)

add/subメソッドを利用することで、日付/時刻値の加算/減算も直感的に行えます。構文:add/subメソッドDateTime::add(DateInterval $interval): DatetimeDateTime::sub(DateInterval $interval): Datetime$interval日付/時間間隔add/subメソッドで加算/減算する日付/時刻は、DateInte...
Datetimeクラス

PHP入門 DateTimeクラス 日付/時刻文字列を解析する(createFromFormatメソッド)

createFromFormat静的メソッドは、指定した書式文字列で日付/時刻文字列を解析(パース)し、DateTimeオブジェクトを生成します。(失敗した場合は、falseを返します)構文:createFromFormatメソッドDateTime::createFromFormat(string $format, string $datetime): Datetime|false$format書...
Datetimeクラス

PHP入門 DateTimeクラス 日付/時刻値のフォーマットで整形する(formatメソッド)

日付/時刻値を整形するには、formatメソッドを使います。構文:formatメソッドDateTime::format(string $format): string$format書式文字列書式文字列には、記述子を含めることができます。記述子とは、書式文字列の中で意味を持った文字列のことで、たとえば「Y」は実行時に4桁の年で置き換えれます。書式文字列で利用可能な記述子記述子概要値a午前/午後am ...
Datetimeクラス

PHP入門 DateTimeクラス タイムスタンプ値を設定する(setTimestampメソッド)

Unixタイムスタンプとは、日付/時刻値を1970年01月01日 00:00:00からの経過秒で表現したものです。タイムスタンプは単なる整数値なので、日付の加算/減算、比較などを通常の整数値と同じように行えます。DateTimeではタイムスタンプ値をベースにさまざまな処理を行います。DateTimeオブジェクトの内容をタイムスタンプ値として取得するには、getTimestampメソッドを利用します...
Datetimeクラス

PHP入門 DateTimeクラス 年月日、時分秒を設定する(setDate/setTimeメソッド)

DateTimeオブジェクトに対して、年月日、時分秒をそれぞれ整数値で指定することもできます。構文:setDate/setTimeメソッドDateTime::setDate(int $year, int $month, int $day): DatetimeDateTime::setTime(int $hour, int $minute, ]): Datetime$year年$month月$day...
php

PHP入門 DateTimeクラス

DateTimeクラスは、日付/時刻の演算や整形を行うためのクラスです。DateTimeオブジェクトの生成構文:DateTimeクラスnew DateTime(])$datatime日付/時刻文字列$timezoneタイムゾーン1、現在の日付/時刻から生成DateTimeオブジェクトを生成するもっとも簡単な方法です。<?php$now = new DateTime();print $now->fo...
php

PHP入門 オブジェクト指向の基本

インスタンス化とメンバーの呼び出しクラスを元にコピーを作る作業をインスタンス化と言います。インスタンス化によってできる複製のことをインスタンス(オブジェクト)と呼びます。クラスをインスタンス化するには、new演算子を利用します。構文:クラスのインスタンス化(new演算子)$変数名 = new クラス名()引数は、オブジェクトを初期化するための情報(オブジェクトに最初に設定しておきたいデータ)です。...
php

PHP入門 ジェネレーター

ジェネレーター(Generator)の見た目は、普通の関数です。しかし、普通の関数がreturn命令で値を返したらそれで終わりであるのに対して、ジェネレーターはyieldという命令を利用することで、つど、その時々の値を返すせる点が異なります。<?phpfunction myGen(){yield 'あいうえお';yield 'かきくけこ';yield 'さしすせそ';}foreach(myGen(...
php

PHP入門 関数呼び出しと戻り値

複数の戻り値、再帰関数、コールバック関数、名関数、アロー関数について解説しています。複数の戻り値関数から複数の戻り値を返したい場合、配列やオブジェクトとして値を1つにまとめた上でreturn命令で戻り値を返します。例:最大値と最小値を求めるreturns.php<?phpfunction max_min(float ...$args): array{ //最大値/最小値の順で配列を生成 retur...
php

PHP入門 引数のさまざまな記法

ユーザー定義関数の引数の既定値、引数の参照渡し、可変長引数の関数、アンバック等のテクニックについて紹介しています。引数の既定値代入演算子「=」を利用することで、仮引数に既定値を設定できます。getTriangleArea関数の引数$base、$heightにそれぞれ既定値5、1を指定する例です。<?phpfunction getTriangleArea(float $base = 5, float...
php

PHP入門 変数の有効範囲(スコープ)

ユーザー定義関数の有効範囲(スコープ)について解説しています。スコープスコープとは、スクリプトの中での変数の有効範囲のことです。PHPのスコープは、スクリプト全体から参照できるグローバルスコープと、定義された関数の中でのみ参照できるローカルスコープとに分類できます。グローバルスコープとローカルスコープグローバル変数とローカル変数グローバルスコープを持つ変数をグローバル変数、ローカルスコープを持つ変...
php

PHP入門 ユーザー定義関数の基本

ユーザー定義関数は、function命令で定義できます。以下の構文はユーザー定義関数の基本的な構文です。構文:function命令function 関数名(仮引数, ・・・・・){ //任意の処理 return 戻り値;}ユーザー定義関数は、「関数名(引数名,…)」のように呼び出せます。例<?phpfunction getTriangleArea($base, $height){ return $...
php

PHP入門 数学関数 変数を破棄する(unset関数)

unset関数を利用することで、変数を破棄できます。構文:abs関数void unset(mixed $var, mixed …$vars)$var、$vars破棄対象の変数例<?php$str; //➊var_dump($str);//結果:NULL$str = '代入'; //➋var_dump($str);//結果:string(6)"代入"unset($str); //➌var_dump(...
php

PHP入門 数学関数 変数のデータ型を判定する(is_xxxxx関数)

変数/リテラルのデータ型を判定し、その結果をture/falseで判定する方法を解説しています。主なis_xxxxx関数関数判定する型is_array配列型is_bool論理型is_callable関数is_countablecount関数でカウント可能な型(配列、またはCountable型)is_double/is_float浮動小数点型is_int/is_integer/is_long整数型i...
php

PHP入門 数学関数 任意の精度で数値の演算を行う(BC Math関数)

任意の精度で数値の演算を行う方法を解説しています。構文:abs関数string bcadd(string $left_operand, string $right_operand )int bccomp(string $left_operand, string $right_operand )string bcdiv(string $left_operand, string $right_oper...
php

PHP入門 数学関数 最大値/最小値(max/min関数)

最大値/最小値を求める方法を解説しています。構文:max/min関数mixed max(array $values)mixed max(array $value1, mixed $value2 )mixed min(array $values)mixed min(array $value1, mixed $value2 )$values最大値、最小値最大値を求めるにはmax関数を、最小値を求めるに...
php

PHP入門 数学関数 乱数の最大値を取得する(getrandmax/mt_getrandmax関数)

乱数の最大値を取得する方法を解説しています。構文:getrandmax/mt_getrandmax関数int getrandmax(void)int mt_getrandmax(void)乱数の最大値を取得するには、「getrandmax」関数や「mt_getrandmax」関数を使います。getrandmax関数は、rand関数で得られる乱数の最大値を返します。mt_getrandmax関数は、...
php

PHP入門 数学関数 乱数を生成する(rand/mt_rand/lcg_value関数)

乱数を生成する方法を解説しています。構文:abs関数int rand (void)int rand(int $min, int $max)int mt_rand(void)int mt_rand(int $min, int $max)float lcg_value(void)$min最小値$max最大値乱数を生成するには「rand」関数や「mt_rand」関数、または「lcg_value」関数を使...
php

PHP入門 数学関数 割り算の余りを求める(fmod関数)

割り算の余りを求める方法を解説しています。構文:fmod関数float fmod(float $x, float $y)$x被除数$y除数割り算の余りを求めるには、「fmod」関数を使います。この関数は、第1引数に被除数を、第2引数に除数を指定します。例:<?php//15 / 6の余りを計算するecho fmod(15,6),"<br>";実行結果
php

PHP入門 数学関数 対数を計算する(log/log10関数)

対数を計算する方法を解説しています。構文:log/log10関数float log(float $arg )float log10(float $arg)$arg対象の数値$base底$baseの対数対数を計算するには、log関数やlog10関数を使います。log関数は、自然対数を返します。また、オプションの第2引数を指定した場合、それを底とする対数を返します。「log10」関数は、「10」を底と...
php

PHP入門 数学関数 eの累乗を計算する(exp関数)

eの累乗を計算する方法を解説しています。構文:exp関数float exp(float $arg)$arg対象の数値e(自然対数の底)の累乗を計算するには、「exp」関数を使います。この関数は、eを引数に指定した値で乗じた値を返します。eの値は、およそ「2.718282」です。例<?php//eの12乗を計算するecho exp(12),"<br>";
php

PHP入門 数学関数 浮動小数点を丸める(round関数)

浮動小数点を丸める方法を解説しています。構文:round関数float round(float $val ])$val対象の浮動小数点$precision小数点以下の桁数$modeモード浮動小数点を丸めるには、「round」関数を使います。この関数は、小数点以下を丸めた値を返します。オプションの第2引数に桁数を指定した場合、その桁数に丸めた値を返します。桁数の負の値、または「0」(既定値)にするこ...
php

PHP入門 数学関数 端数の切り上げ/切り捨てを行う(ceil/floor関数)

端数を切り上げ/切り捨てる方法を解説しています。構文:ceil/floor関数float ceil(float $value)float floor(float $value)端数を切り上げるには「ceil」関数を、切り捨てるには「floor」関数を使います。「ceil」関数は、引数に渡された浮動小数点(float)の小数点以下を切り上げた整数値を返します。「floor」関数は、引数に渡された浮動...