| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「PHP」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の72版が非表示)
1行目: 1行目:
 +
| [[FuelPHP]] | [[XAMPP]] |
 
==[[PHP]]==
 
==[[PHP]]==
==インストール==
+
{{amazon|B01FH3KVNU}}
===[[CentOS]]へのインストール===
+
===インストール===
 +
----
 +
====[[Ubuntu]]へのインストール====
 +
----
 +
=====[[Apache]]と同時にインストール=====
 +
<pre>
 +
$ sudo apt install php libapache2-mod-php
 +
</pre>
 +
====[[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
12行目: 22行目:
 
  &lt;?php
 
  &lt;?php
 
  phpinfo();
 
  phpinfo();
 +
===対話形式(REPL)===
 +
----
 +
*Ubuntuでは、cli、readllineのインストールが必要
 +
<pre>
 +
$ sudo apt install php-cli php-readline
 +
</pre>
 +
*実行
 +
<pre>
 +
$ sudo php -a
 +
Interactive mode enabled
  
===phpMyAdmin===
+
php >
*https://qiita.com/100/items/8e9d9540845cc23e6111
+
</pre>
*https://docs.phpmyadmin.net/ja/latest/
+
*ctrl+k : clear
  
$ sudo yum install php-mysqlnd
+
===接続===
 +
----
 +
====[[phpMyAdmin]]====
 +
*[[phpMyAdmin]]
  
====/etc/yum.repos.d/remi.repo に追記====
+
===ツール===
*emi リポジトリからインストールする必要のないパッケージが上書きされないよう限定
+
----
[remi]
+
====PHP Archive (PHAR)====
  :
+
----
includepkgs=phpMyAdmin php-phpmyadmin-sql-parser php-phpmyadmin-motranslator php-phpseclib php-google-recaptcha php-twig-extensions php-symfony-polyfill php-samyoul-u2f-php-server php-pragmarx-google2fa
+
必要な依存コンポーネントがすべて (オプションのコンポーネントの一部も含めて) ひとつのファイルにまとめられています。
  
sudo yum-config-manager --enable remi
+
====Composer====
sudo yum install phpMyAdmin
+
----
 +
*https://getcomposer.org/
 +
*PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システム*
 +
*composer.jsonがあるディレクトリ上でcomposer installとするだけで、依存しているライブラリを取得。
 +
*composer.lockはcomposer.jsonにあるライブラリを取得するのに、実際にどのファイルを入手したかをまとめたもの
  
====phpMyAdmin のインストールが依存関係で失敗する場合[[PHP]]のバージョン全体の入れ直し====
+
====PHPUnit====
*https://kekaku.addisteria.com/wp/20190301193909
+
----
yum info installed php*
+
*https://phpunit.de/
yum remove php*
+
[https://phpunit.readthedocs.io/ja/latest/ マニュアル]
yum install -y --enablerepo=remi-php74 php php-gd php-intl php-json php-mysqlnd php-mbstring
 
yum install -y --enablerepo=remi-php74 phpMyAdmin
 
  
====/usr/share/phpMyAdmin/sql/create_tables.sql の編集====
+
*HPプログラミング言語用の単体テストを行うためのフレームワークである。 SUnitを起源としてJUnitで一般的になった、xUnitの設計を元にした単体テストのフレームワーク
*以下コメントアウト
+
*PHPUnitはプロジェクト単位でローカルな依存として管理すべき
--
+
*Composerを使っているならそのプロジェクトで必要とするPHPUnitのバージョンを composer.json に書く
-- Pri[[vi]]leges
+
=====Composerを利用したインストール=====
--
+
*composer.json に追記
  -- (activate this statement if necessary)
+
*composer update でインストール
GR[[ANT]] SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
+
<pre>
  'pma'@localhost;
+
$ php composer.phar require --dev phpunit/phpunit 9.3
 +
</pre>
 +
*composer.json の追記内容
 +
<pre>
 +
$ 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",
 +
</pre>
 +
*version確認
 +
<pre>
 +
$ fuel/vendor/bin/phpunit --version
 +
PHPUnit 9.3.0 by Sebastian Bergmann and contributors.
 +
</pre>
 +
 
 +
=====[[FuelPHP]] oilコマンドから利用可能にする=====
 +
<pre>
 +
$ 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' ,
 +
</pre>
  
====[[MySQL]]====
+
==プログラミング==
*ログイン
+
===基本===
# mysql -u root -p
+
----
mysql&gt; create user 'pma'@'localhost' identified by 'パスワード'
+
*<?php 〜 ?> に処理を記述
mysql&gt; source /usr/share/phpMyAdmin/sql/create_tables.sql
+
*文末はセミコロン
====Httpd====
+
*<u>'''命令文の大文字小文字は区別しない'''</u>
*/etc/httpd/conf.d/phpMyAdmin.conf
+
*コメント
**どこからでもアクセス可能にするには、[[R]]euire all granted
+
** 単一行: // , #
[[File:0957_phpmyadmin01.png]]
+
** 複数行: /* 〜 */
 +
====デバッグ====
 +
*print_r()  配列、オブジェクトなどを整形し出力
 +
*var_dump() 変数の情報を出力
  
===[[Ubuntu]]へのインストール===
+
===比較演算子===
====[[Apache]]と同時にインストール====
+
----
 +
{|class="wikitable"
 +
!演算子
 +
!意味
 +
|-
 +
|==
 +
|値が等しい
 +
|-
 +
|===
 +
|値およびデータ型が等しい
 +
|-
 +
|!=, <>
 +
|値が等しくない
 +
|-
 +
|!==
 +
|値またはデータ型が等しくない
 +
|-
 +
|<
 +
|小なり
 +
|-
 +
|>
 +
|大なり
 +
|-
 +
|<=
 +
|小なりイコール
 +
|-
 +
|>=
 +
|大なりイコール
 +
|-
 +
|<=>
 +
|左辺が右辺より小さい場合には、-1、一致する場合には、0、左辺が右辺より大きい場合には1
 +
|-
 +
|?:
 +
|条件式?真の場合:偽の場合
 +
|-
 +
|??
 +
|左辺がnullでなければその値、nullなら右辺、双方nullならnull
 +
|-
 +
|}
 +
===変数===
 +
----
 +
* $名前形式
 +
* 名前の先頭は英字か_
 +
* 大文字/小文字は区別される
 +
====可変変数====
 +
----
 +
*先頭に$を2つ重ねることで、変数の内容を変数名によって決定する
 +
*可変部分を{}で括ることもできる
 
<pre>
 
<pre>
$ sudo apt install php libapache2-mod-php
+
<?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>
 
</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時点における最新版

| FuelPHP | XAMPP |

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拡張