「PHP」の版間の差分
ナビゲーションに移動
検索に移動
(→基本) |
|||
| (同じ利用者による、間の51版が非表示) | |||
| 2行目: | 2行目: | ||
==[[PHP]]== | ==[[PHP]]== | ||
{{amazon|B01FH3KVNU}} | {{amazon|B01FH3KVNU}} | ||
| − | ==インストール== | + | ===インストール=== |
| − | ===[[Ubuntu]]へのインストール=== | + | ---- |
| − | ====[[Apache]]と同時にインストール==== | + | ====[[Ubuntu]]へのインストール==== |
| + | ---- | ||
| + | =====[[Apache]]と同時にインストール===== | ||
<pre> | <pre> | ||
$ sudo apt install php libapache2-mod-php | $ sudo apt install php libapache2-mod-php | ||
</pre> | </pre> | ||
| − | ===[[CentOS]]へのインストール=== | + | ====[[CentOS]]へのインストール==== |
| + | ---- | ||
https://weblabo.oscasierra.net/centos7-php71-install/ | https://weblabo.oscasierra.net/centos7-php71-install/ | ||
# yum -y install epel-release | # yum -y install epel-release | ||
| 19行目: | 22行目: | ||
<?php | <?php | ||
phpinfo(); | phpinfo(); | ||
| + | ===対話形式(REPL)=== | ||
| + | ---- | ||
| + | *Ubuntuでは、cli、readllineのインストールが必要 | ||
| + | <pre> | ||
| + | $ sudo apt install php-cli php-readline | ||
| + | </pre> | ||
| + | *実行 | ||
| + | <pre> | ||
| + | $ sudo php -a | ||
| + | Interactive mode enabled | ||
| − | + | php > | |
| − | + | </pre> | |
| − | * | + | *ctrl+k : clear |
| − | + | ===接続=== | |
| + | ---- | ||
| + | ====[[phpMyAdmin]]==== | ||
| + | *[[phpMyAdmin]] | ||
| − | === | + | ===ツール=== |
| − | + | ---- | |
| − | + | ====PHP Archive (PHAR)==== | |
| − | + | ---- | |
| − | + | 必要な依存コンポーネントがすべて (オプションのコンポーネントの一部も含めて) ひとつのファイルにまとめられています。 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | ==== | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | === | + | ====Composer==== |
| − | + | ---- | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*https://getcomposer.org/ | *https://getcomposer.org/ | ||
*PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システム* | *PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システム* | ||
| 66行目: | 55行目: | ||
*composer.lockはcomposer.jsonにあるライブラリを取得するのに、実際にどのファイルを入手したかをまとめたもの | *composer.lockはcomposer.jsonにあるライブラリを取得するのに、実際にどのファイルを入手したかをまとめたもの | ||
| − | == | + | ====PHPUnit==== |
| − | + | ---- | |
| − | |||
| − | == | ||
*https://phpunit.de/ | *https://phpunit.de/ | ||
[https://phpunit.readthedocs.io/ja/latest/ マニュアル] | [https://phpunit.readthedocs.io/ja/latest/ マニュアル] | ||
| 76行目: | 63行目: | ||
*PHPUnitはプロジェクト単位でローカルな依存として管理すべき | *PHPUnitはプロジェクト単位でローカルな依存として管理すべき | ||
*Composerを使っているならそのプロジェクトで必要とするPHPUnitのバージョンを composer.json に書く | *Composerを使っているならそのプロジェクトで必要とするPHPUnitのバージョンを composer.json に書く | ||
| − | ===Composerを利用したインストール=== | + | =====Composerを利用したインストール===== |
*composer.json に追記 | *composer.json に追記 | ||
*composer update でインストール | *composer update でインストール | ||
| 105行目: | 92行目: | ||
PHPUnit 9.3.0 by Sebastian Bergmann and contributors. | PHPUnit 9.3.0 by Sebastian Bergmann and contributors. | ||
</pre> | </pre> | ||
| − | ===oilコマンドから利用可能にする=== | + | |
| + | =====[[FuelPHP]] oilコマンドから利用可能にする===== | ||
<pre> | <pre> | ||
$ cp fuel/packages/oil/config/oil.php fuel/app/config/ | $ cp fuel/packages/oil/config/oil.php fuel/app/config/ | ||
| 113行目: | 101行目: | ||
'binary_path' => VENDORPATH.'bin/phpunit' , | 'binary_path' => VENDORPATH.'bin/phpunit' , | ||
</pre> | </pre> | ||
| + | |||
==プログラミング== | ==プログラミング== | ||
===基本=== | ===基本=== | ||
| + | ---- | ||
*<?php 〜 ?> に処理を記述 | *<?php 〜 ?> に処理を記述 | ||
*文末はセミコロン | *文末はセミコロン | ||
| − | *''' | + | *<u>'''命令文の大文字小文字は区別しない'''</u> |
| + | *コメント | ||
| + | ** 単一行: // , # | ||
| + | ** 複数行: /* 〜 */ | ||
| + | ====デバッグ==== | ||
| + | *print_r() 配列、オブジェクトなどを整形し出力 | ||
| + | *var_dump() 変数の情報を出力 | ||
| + | |||
| + | ===比較演算子=== | ||
| + | ---- | ||
| + | {|class="wikitable" | ||
| + | !演算子 | ||
| + | !意味 | ||
| + | |- | ||
| + | |== | ||
| + | |値が等しい | ||
| + | |- | ||
| + | |=== | ||
| + | |値およびデータ型が等しい | ||
| + | |- | ||
| + | |!=, <> | ||
| + | |値が等しくない | ||
| + | |- | ||
| + | |!== | ||
| + | |値またはデータ型が等しくない | ||
| + | |- | ||
| + | |< | ||
| + | |小なり | ||
| + | |- | ||
| + | |> | ||
| + | |大なり | ||
| + | |- | ||
| + | |<= | ||
| + | |小なりイコール | ||
| + | |- | ||
| + | |>= | ||
| + | |大なりイコール | ||
| + | |- | ||
| + | |<=> | ||
| + | |左辺が右辺より小さい場合には、-1、一致する場合には、0、左辺が右辺より大きい場合には1 | ||
| + | |- | ||
| + | |?: | ||
| + | |条件式?真の場合:偽の場合 | ||
| + | |- | ||
| + | |?? | ||
| + | |左辺がnullでなければその値、nullなら右辺、双方nullならnull | ||
| + | |- | ||
| + | |} | ||
| + | ===変数=== | ||
| + | ---- | ||
| + | * $名前形式 | ||
| + | * 名前の先頭は英字か_ | ||
| + | * 大文字/小文字は区別される | ||
| + | ====可変変数==== | ||
| + | ---- | ||
| + | *先頭に$を2つ重ねることで、変数の内容を変数名によって決定する | ||
| + | *可変部分を{}で括ることもできる | ||
| + | <pre> | ||
| + | <?php | ||
| + | $name = 'yagi'; | ||
| + | $age = 49; | ||
| + | |||
| + | $x = 'name'; | ||
| + | echo $$x; | ||
| + | $x = 'age'; | ||
| + | echo ${$x}; | ||
| + | ?> | ||
| + | </pre> | ||
| + | *結果 | ||
| + | <pre> | ||
| + | yagi49 | ||
| + | </pre> | ||
| + | |||
| + | ===定数=== | ||
| + | ---- | ||
| + | * const 定数名 = 値 | ||
| + | * 先頭に$は不要 | ||
| + | * 全て大文字で命名 | ||
| + | ====定義済み定数==== | ||
| + | {|class="wikitable" | ||
| + | !定数 | ||
| + | !意味 | ||
| + | |- | ||
| + | |__FILE__ | ||
| + | |実行中ファイル絶対パス | ||
| + | |- | ||
| + | |__DIR__ | ||
| + | |実行中ファイルのディレクトリ | ||
| + | |- | ||
| + | |__LINE__ | ||
| + | |実行中の行番号 | ||
| + | |- | ||
| + | |__FUNCTION__ | ||
| + | |実行中の関数 | ||
| + | |- | ||
| + | |__CLASS__ | ||
| + | |実行中のクラス | ||
| + | |- | ||
| + | |__METHOD__ | ||
| + | |実行中のメソッド | ||
| + | |- | ||
| + | |__TRAIT__ | ||
| + | |実行中のトレイト | ||
| + | |- | ||
| + | |__NAMESPACE__ | ||
| + | |実行中の名前空間 | ||
| + | |- | ||
| + | |DIRECTORY_SEPARATOR | ||
| + | |ディレクトリ区切り文字 | ||
| + | |- | ||
| + | |PATH_SEPARATOR | ||
| + | |パス区切り文字 | ||
| + | |- | ||
| + | |PHP_VERSION | ||
| + | |PHPバージョン | ||
| + | |- | ||
| + | |} | ||
| + | ===データ型=== | ||
| + | ---- | ||
| + | {|class="wikitable" | ||
| + | !データ型名称 | ||
| + | !データ型 | ||
| + | !概要 | ||
| + | |- | ||
| + | |論理 | ||
| + | |bool,boolean | ||
| + | |true/false | ||
| + | リテラルは大小文字を区別しない。 | ||
| + | 空文字、0という文字列、0数値、空の配列、null を自動的にfalseとみなす | ||
| + | |- | ||
| + | |整数 | ||
| + | |int,integer | ||
| + | |16進(0x)、8進(0) | ||
| + | |- | ||
| + | |浮動小数点数 | ||
| + | |float,double,real | ||
| + | | | ||
| + | |- | ||
| + | |文字列 | ||
| + | |string | ||
| + | |リテラルは、引用符または二重引用符で囲む。\でエスケープ。 | ||
| + | 二重引用符で囲むと、\t や ${変数} を展開する。(引用符では展開しない) | ||
| + | |- | ||
| + | |配列 | ||
| + | |array | ||
| + | | | ||
| + | |- | ||
| + | |オブジェクト | ||
| + | |object | ||
| + | | | ||
| + | |- | ||
| + | |リソース | ||
| + | |resource | ||
| + | |外部リソース参照 | ||
| + | |- | ||
| + | |NULL | ||
| + | |null | ||
| + | | | ||
| + | |- | ||
| + | |} | ||
| + | ====キャスト==== | ||
| + | *(データ型) 値 | ||
| + | ====ヒアドキュメント==== | ||
| + | ---- | ||
| + | *<<<デリミタ ー デリミタ;までを文字列リテラルとみなす | ||
| + | *デリミタをEODとした例 | ||
| + | <pre> | ||
| + | $msg = <<<EOD | ||
| + | this | ||
| + | is | ||
| + | message. | ||
| + | EOD; | ||
| + | </pre> | ||
| + | ====配列==== | ||
| + | ---- | ||
| + | *生成 | ||
| + | *print_r は配列はオブジェクトなどを見やすく出力 | ||
| + | <pre> | ||
| + | $nums = [1,2,3]; | ||
| + | print_r($nums); | ||
| + | </pre> | ||
| + | =====多次元配列===== | ||
| + | <pre> | ||
| + | $data = [ | ||
| + | [1,2,3], | ||
| + | [4,5,6], | ||
| + | [7,8,9] | ||
| + | ]; | ||
| + | </pre> | ||
| + | |||
| + | ====連想配列==== | ||
| + | ---- | ||
| + | <pre> | ||
| + | $dict = [ | ||
| + | 1 => 'a', | ||
| + | 2 => 'b', | ||
| + | 3 => 'c' | ||
| + | ]; | ||
| + | print_r($dict); | ||
| + | $dict[1] = 'A'; | ||
| + | print_r($dict); | ||
| + | </pre> | ||
| + | *KEYが整数である連想配列と配列に違いはない | ||
| + | *配列やオブジェクトをKEYにできない | ||
| + | ====配列の演算==== | ||
| + | ---- | ||
| + | *+ : 左の配列に存在しないKEYを右の配列から追加する。 | ||
| + | <pre> | ||
| + | php > $d1 = [1=>1,2=>2,3=>3]; | ||
| + | php > $d2 = [3=>4,4=>5,6=>7]; | ||
| + | php > print_r($d1 + $d2); | ||
| + | Array | ||
| + | ( | ||
| + | [1] => 1 | ||
| + | [2] => 2 | ||
| + | [3] => 3 | ||
| + | [4] => 5 | ||
| + | [6] => 7 | ||
| + | ) | ||
| + | </pre> | ||
| + | ==Tips== | ||
| + | ===[[Visual Studio Code]]拡張=== | ||
| + | ---- | ||
| + | *https://yama-itech.net/visual-studio-code-recommend-setting-php | ||
| + | *[https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client PHP Intelephense] | ||
| + | |||
| + | [[category:プログラミング言語]] | ||
2021年11月27日 (土) 14:48時点における最新版
PHP
インストール
Ubuntuへのインストール
Apacheと同時にインストール
$ sudo apt install php libapache2-mod-php
CentOSへのインストール
https://weblabo.oscasierra.net/centos7-php71-install/
# yum -y install epel-release
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm # yum -y install httpd php74 php74-php # systemctl enable httpd.service # systemctl start httpd.service # vi /var/www/html/info.php <?php phpinfo();
対話形式(REPL)
- Ubuntuでは、cli、readllineのインストールが必要
$ sudo apt install php-cli php-readline
- 実行
$ sudo php -a Interactive mode enabled php >
- ctrl+k : clear
接続
phpMyAdmin
ツール
PHP Archive (PHAR)
必要な依存コンポーネントがすべて (オプションのコンポーネントの一部も含めて) ひとつのファイルにまとめられています。
Composer
- https://getcomposer.org/
- PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システム*
- composer.jsonがあるディレクトリ上でcomposer installとするだけで、依存しているライブラリを取得。
- composer.lockはcomposer.jsonにあるライブラリを取得するのに、実際にどのファイルを入手したかをまとめたもの
PHPUnit
- HPプログラミング言語用の単体テストを行うためのフレームワークである。 SUnitを起源としてJUnitで一般的になった、xUnitの設計を元にした単体テストのフレームワーク
- PHPUnitはプロジェクト単位でローカルな依存として管理すべき
- Composerを使っているならそのプロジェクトで必要とするPHPUnitのバージョンを composer.json に書く
Composerを利用したインストール
- composer.json に追記
- composer update でインストール
$ php composer.phar require --dev phpunit/phpunit 9.3
- composer.json の追記内容
$ git diff composer.json
diff --git a/composer.json b/composer.json
index 61a9404..e7a9b8a 100644
--- a/composer.json
+++ b/composer.json
@@ -16,7 +16,8 @@
"fuelphp/upload": "2.0.6"
},
"require-dev": {
- "fuel/docs": "1.8.*"
+ "fuel/docs": "1.8.*",
+ "phpunit/phpunit": "9.3"
},
"suggest": {
"dwoo/dwoo" : "Allow Dwoo templating with the Parser package",
- version確認
$ fuel/vendor/bin/phpunit --version PHPUnit 9.3.0 by Sebastian Bergmann and contributors.
FuelPHP oilコマンドから利用可能にする
$ cp fuel/packages/oil/config/oil.php fuel/app/config/
$ vi fuel/app/config/oil.php
:
'autoload_path' => 'PHPUnit/Autoload.php' ,
'binary_path' => VENDORPATH.'bin/phpunit' ,
プログラミング
基本
- <?php 〜 ?> に処理を記述
- 文末はセミコロン
- 命令文の大文字小文字は区別しない
- コメント
- 単一行: // , #
- 複数行: /* 〜 */
デバッグ
- print_r() 配列、オブジェクトなどを整形し出力
- var_dump() 変数の情報を出力
比較演算子
| 演算子 | 意味 |
|---|---|
| == | 値が等しい |
| === | 値およびデータ型が等しい |
| !=, <> | 値が等しくない |
| !== | 値またはデータ型が等しくない |
| < | 小なり |
| > | 大なり |
| <= | 小なりイコール |
| >= | 大なりイコール |
| <=> | 左辺が右辺より小さい場合には、-1、一致する場合には、0、左辺が右辺より大きい場合には1 |
| ?: | 条件式?真の場合:偽の場合 |
| ?? | 左辺がnullでなければその値、nullなら右辺、双方nullならnull |
変数
- $名前形式
- 名前の先頭は英字か_
- 大文字/小文字は区別される
可変変数
- 先頭に$を2つ重ねることで、変数の内容を変数名によって決定する
- 可変部分を{}で括ることもできる
<?php
$name = 'yagi';
$age = 49;
$x = 'name';
echo $$x;
$x = 'age';
echo ${$x};
?>
- 結果
yagi49
定数
- const 定数名 = 値
- 先頭に$は不要
- 全て大文字で命名
定義済み定数
| 定数 | 意味 |
|---|---|
| __FILE__ | 実行中ファイル絶対パス |
| __DIR__ | 実行中ファイルのディレクトリ |
| __LINE__ | 実行中の行番号 |
| __FUNCTION__ | 実行中の関数 |
| __CLASS__ | 実行中のクラス |
| __METHOD__ | 実行中のメソッド |
| __TRAIT__ | 実行中のトレイト |
| __NAMESPACE__ | 実行中の名前空間 |
| DIRECTORY_SEPARATOR | ディレクトリ区切り文字 |
| PATH_SEPARATOR | パス区切り文字 |
| PHP_VERSION | PHPバージョン |
データ型
| データ型名称 | データ型 | 概要 |
|---|---|---|
| 論理 | bool,boolean | true/false
リテラルは大小文字を区別しない。 空文字、0という文字列、0数値、空の配列、null を自動的にfalseとみなす |
| 整数 | int,integer | 16進(0x)、8進(0) |
| 浮動小数点数 | float,double,real | |
| 文字列 | string | リテラルは、引用符または二重引用符で囲む。\でエスケープ。
二重引用符で囲むと、\t や ${変数} を展開する。(引用符では展開しない) |
| 配列 | array | |
| オブジェクト | object | |
| リソース | resource | 外部リソース参照 |
| NULL | null |
キャスト
- (データ型) 値
ヒアドキュメント
- <<<デリミタ ー デリミタ;までを文字列リテラルとみなす
- デリミタをEODとした例
$msg = <<<EOD this is message. EOD;
配列
- 生成
- print_r は配列はオブジェクトなどを見やすく出力
$nums = [1,2,3]; print_r($nums);
多次元配列
$data = [
[1,2,3],
[4,5,6],
[7,8,9]
];
連想配列
$dict = [
1 => 'a',
2 => 'b',
3 => 'c'
];
print_r($dict);
$dict[1] = 'A';
print_r($dict);
- KEYが整数である連想配列と配列に違いはない
- 配列やオブジェクトをKEYにできない
配列の演算
- + : 左の配列に存在しないKEYを右の配列から追加する。
php > $d1 = [1=>1,2=>2,3=>3];
php > $d2 = [3=>4,4=>5,6=>7];
php > print_r($d1 + $d2);
Array
(
[1] => 1
[2] => 2
[3] => 3
[4] => 5
[6] => 7
)
Tips
Visual Studio Code拡張
© 2006 矢木浩人