目次
コード2000行分のPHP学習メモのまとめ、PHP学習メモ2000行
ホームページ バックエンド開発 PHPチュートリアル 2000 行のコードの PHP 学習メモのまとめ、2000 行の PHP 学習メモ_PHP チュートリアル

2000 行のコードの PHP 学習メモのまとめ、2000 行の PHP 学習メモ_PHP チュートリアル

Jul 13, 2016 am 10:17 AM
php 勉強 ノート

コード2000行分のPHP学習メモのまとめ、PHP学習メモ2000行

この記事は、PHP 学習におけるさまざまな一般的な問題をまとめたもので、2,000 行以上のコードがあり、そのすべてが非常に実践的なスキルです。参考のためにみんなで共有してください。詳細は以下の通りです

//構文エラー (構文エラー) 構文解析フェーズではソースコードが実行されていないため、出力はありません。

/* [命名規則] */
クラス定数の定数名はすべて大文字にすること、単語はアンダースコアで区切ることをお勧めします // MIN_WIDTH
変数名はアンダースコアで区切ることをお勧めします // $var_name
関数名にはキャメルケースの命名方法を使用することをお勧めします // varName
区切り文字にはすべて大文字を使用することをお勧めします // <<<DING, <<<'DING'
ファイル名はすべて小文字で、アンダースコアと数字を使用することをお勧めします // func_name.php
プライベート属性名とメソッド名には下線を付けることをお勧めします // private $_name _func
インターフェイス名に I_ // インターフェイス I_Name を追加することをお勧めします。

/* 言語構造 */
array()、echo()、empty()、eval()、exit()、isset()、list()、print()、unset()
echo、print では括弧を省略できます。

/* 事前定義された定数 */
PATH_SEPARATOR //パス区切り文字 (Windows の場合はセミコロン、Unix の場合はコロン)
DIRECTORY_SEPARATOR //ディレクトリ区切り文字
PHP_EOL //現在のシステムの改行文字
PHP_VERSION //PHP のバージョン番号
PHP_OS //PHP サービス オペレーティング システム
PHP_SAPI // PHP_SAPI=='cli' がコマンドラインで実行されることを意味する場合、コマンドラインを使用して実行するかブラウザを使用して実行するかを決定するために使用されます
PHP_INT_MAX INT の最大値。32 ビット プラットフォームの値は 2147483647 です。
PHP_INT_SIZE INT ワード長、値は 32 ビット プラットフォームでは 4 (4 バイト)
M_PI //Pi値
M_E //自然数

//PHP実行環境検出関数
php_sapi_name() //PHP および WEB サーバー インターフェイス タイプの小文字の文字列を返します。
この関数の戻り値は定数 PHP_SAPI! と一致します。
インターフェイスの種類: SAPI (サーバー API、SAPI)
可能な値: aolserver、apache、apache2filter、apache2handler、caudium、cgi、cgi-fcgi、cli、continuity、embed、isapi、litespeed milter、nsapi、phttpd、pi3web、roxen、thttpd、tux、webjames


/* 大文字小文字の問題 */
- クラス名、メソッド名、属性名、関数名:大文字と小文字は区別されません
- 変数名、定数名、要素の添字:大文字と小文字が区別されます。

/* 変数識別子 */
変数変数 $i = 3 $k = 'i'; //出力 3
変数関数 function func() {echo 'hello!';} $i = 'func'; //hello を出力します。
変数の添字 $i = '1234'; $k = 3; //出力 4
変数クラス名 class CLS{public $k = 'hello';} $i = 'CLS'; $j = new $i->k;
変数属性 class CLS{public $k = 'hello';} $i = 'k'; $j = new CLS;
変数メソッドクラス CLS{public function k(){echo 'hello';}} $j=new CLS;

/* 変数変数 */
※ ある特定の情報を取得するためのビジネスロジックの判断に使用されます
  $var_name = "クラス名";
  $$var_name = "PHP0913"; // $class_name = "PHP0913";$class_name はメモリに保存されました
  var_dump($class_name); // var_dump($$var_name);

/* 変数関数 */
get_define_vars //定義されたすべての変数(環境変数、サーバー変数、ユーザー定義変数を含む)で構成される配列を返します


/* unset() */
* unset() は現在の変数名と参照を削除するだけで、その値は削除されません
※参照転送では、変数とその参照を削除しても、他の変数と参照は存在し、値も残ります。

   エコー "<br />";
  $v3 = '値';
  $v4 = &$v3;
  設定を解除($v4);
  var_dump($v3, $v4);

/* 変数の最大有効期間 */
※ 現在のスクリプトの実行サイクル。スクリプトの実行が終了すると変数は消えます。


/* 定義済み変数/スーパーグローバル変数 */
$グローバル
$_クッキー
$_ENV
$_FILES
$_GET
$_POST
$_REQUEST
$_サーバー
$_セッション


/* 定数の定義 */
define(定数名, 定数値, [大文字と小文字を区別するパラメータ]) //true は大文字と小文字を区別しないことを意味します/false は大文字と小文字を区別することを意味します
const 定数名 = 定数値 // 新しい、推奨
定数名には特殊文字を使用できます
constant($name) // 定数名を取得します
          //例: echo constant('-_-');


/* 定数関連の関数 */
定義済み
get_define_constants


/* 事前定義された定数 */
__FILE__ ファイルへの絶対パス
__LINE__ ファイル内の現在の行番号
__DIR__ ファイルが配置されているディレクトリ
__FUNCTION__ 関数名
__CLASS__ クラスの名前
__METHOD__ クラスのメソッド名
__NAMESPACE__ 現在のネームスペースの名前


/* 整数型 */
整数は 4 バイトを占め、合計 4*8=32 ビットになります。最大値は 2147483647 で、最小値の絶対値は最大値より 1 大きくなります。
最大値は正と負を表し、1 は負を表し、0 は正を表します


/* 基数変換関数 */
変換できるのは10進数などの基数のみで、種類は6種類のみです。
変換する場合、パラメーターは文字列である必要があります (つまり、8 進数の「0」または 16 進数の「0x」を含めることはできません)。
  12月
   置き場
   10月
  16進数
hexdec() は 16 進数を 10 進数に変換します。 hex2dec() と書くこともできます。
dechex() は 10 進数を 16 進数に変換します。dec2hex() と記述することもできます。
bindec() は 2 進数を 10 進数に変換します。bin2dec() と記述することもできます。
decbin() は 10 進数を 2 進数に変換します。 dex2bin() と記述することもできます。
octdec() は 8 進数を 10 進数に変換します。 oct2dec() と書くこともできます。
decoct() は 10 進数を 8 進数に変換します。dec2oct() と記述することもできます。


/* 浮動小数点数 */
浮動小数点数は比較できません。 ! !
ほとんどすべての小数は、保存すると正確ではなく近似値になります。
最大値: +/- 1.8E308
PHP が保存できる最長の小数点以下の桁: 14 桁

/* 一重引用符で囲まれた文字列 */
一重引用符で囲まれた文字列では、バックスラッシュと一重引用符のみをエスケープできます。

/* 二重引用符で囲まれた文字列 */
文字列を解析するのは 1 回だけです。 ! !
eval は文字列を PHP コードとして実行します
中括弧で変数を囲み、変数名の境界を決定します。例: 「aaa{$bbb}ccc」
ASCIIコードは二重引用符で囲まれた文字に変換できます
"x61" -> a // 文字列に 0 は必要ありません。整数型の先頭には 0x だけが付きます。
「x49x54x43x41x53x54」 ->
ASCII を文字関数 chr() に変換する
文字を ASCII 関数 ord() に変換する
#二重引用符エスケープリスト
n 改行
r 入力
t 水平タブ文字
\ バックスラッシュ
$ドルマーク
v 垂直タブ
エスケープ
f ページ変更
「二重引用符」
[0-7]{1,3} は、この正規表現シーケンスに一致し、8 進表記で表現された文字です。
x[0-9A-Fa-f]{1,2} は、この正規表現シーケンスと一致し、16 進形式で表現された文字です



/* 区切り文字 */
herodoc - 二重引用符と同じように機能し、解析可能
$str = <<<AAA
文字列の内容
AAA;

nowdoc - 一重引用符と同じように機能しますが、解析できません
一重引用符は先頭にのみ指定します
$str = <<<'AAA'
文字列の内容
AAA;


/* 文字列の使用法 */
文字列を文字のコレクションとして使用でき、各文字に個別にアクセスできます。半角文字(文字、数字、半角句読点)のみ対応、中国語等は使用不可
$str = "abcd";
echo $str[3]; // d
echo $str{0};


/* [型演算関数] */
//型を取得/設定する
gettype($var) //変数のデータ型を取得します
settype($var, $type) //変数のデータ型を設定します

//型判定
is_int
is_float
無効である
is_string
is_resource
is_array
is_bool
オブジェクトです
is_numeric は、変数が数値であるか数値文字列であるかを検出します。

//指定されたデータ型に変換します
ブール値
フロートヴァル
間隔
ストラヴァル

//フォースタイプ
(整数)
(浮く)
(弦)
(ブール)
(配列)
(物体)
(未設定) //NULLに変換
(バイナリ) 変換と b プレフィックス変換 //バイナリに変換します

var_dump は変数に関する情報を出力します。
        式のタイプや値など、1 つ以上の式に関する構造情報を表示します。
        配列は値を再帰的に展開し、インデントによって構造を示します。
var_export($var [,bool $return]) //変数の文字列表現を出力または返します
  $return: true の場合、変数実行後の結果が返されます。
print_r は変数に関する人間が読める形式の情報を出力します。
empty は変数が空かどうかをチェックします
isset は変数が存在するかどうかを検出します

/* [プロセス制御] */
// if ステートメントの代替構文
if (条件判断):
  ステートメントブロック;
elseif (条件判断):
  ステートメントブロック;
それ以外 :
  ステートメントブロック;
エンドイフ;

//フロー制御の代替構文
HTMLを埋め込むときによく使用されます
{ を : 、 } などに置き換えます。
エンドイフ
ついでに
エンドフォー
エンドフォーリーチ
エンドスイッチ


/* 【スイッチ】 */
スイッチ (条件) {
  ケースステータス値 1:
    ステートメントブロック;
    [壊す;]
  ケースステータス値 2:
    ステートメントブロック;
    [壊す;]
  ケースステータス値 3:
  ケースステータス値 4:
    ステートメントブロック;
    [壊す;]
  デフォルト:
    ステートメントブロック;
    [壊す;]
}
switch は状態ブランチ、特殊なループです
まずステータス値を計算し、判定番号と比較します。
終了プロセスを中断する


/* [for ループ] */
for (条件初期化式; 条件判定式; 条件変更式) {
ループ本体
}

ループ本体が N 回実行されると仮定すると、
条件付き初期化式は 1 回実行されます
条件判定式をN+1回実行する
条件変更式がN回実行される

知らせ:
  1. ループ変数は for ステートメントの終了後も使用し続けることができ、その値は最初の失敗の値になります。
  2. ループ変数は for ループ本体内で使用できます。
  3. 条件式は省略可能ですが、セミコロンは省略できません。
    a. 条件初期化式を省略した場合はループ変数にnullを代入し、条件付きで判定した場合は、
      型変換を行って比較します。初期化は for ステートメントの外側で行うこともできます。
    b. 条件判定式を省略した場合は真となり、無限ループとなります。
    c. 条件変更式を省略した場合、ループ本体内で完結することができます。
  4. 各式は複数のステートメントで構成でき、各ステートメントはカンマで区切られます。
    条件判定式が複数の文で構成される場合、それらはすべて実行されますが、最後の文のみが判定条件となります。
  5. for は数値インデックスの添字配列のみをトラバースできます。
    配列長関数: count()
  6. 初期化できるステートメントは、条件付き初期化式内に配置する必要があります。これにより、実行時間を大幅に節約できます。


/* 【goto】5.3+ バージョン */
プログラム内の指定された位置にジャンプするために使用されます。
ターゲットの場所は、ターゲット名とそれに続くコロンでマークできます。
PHP の Goto には特定の制限があり、同じファイルおよびスコープ内でのみジャンプできます。
  つまり、関数やクラス メソッドから抜け出すことも、別の関数にジャンプすることもできません。
  また、ループにジャンプしたり、構造を切り替えたりすることもできません。
  一般的な使用法は、ループまたはスイッチから抜け出すことであり、複数レベルのブレークを置き換えることができます。 
ループ(スイッチ)から飛び出すことはできますが、外側から飛び込むことはできません。関数やクラスメソッドを外部から内部へ使用することはできません。へ行く;
「フー」とエコーします。
答え:
エコー「バー」;


/* [ファイル読み込み] */
必要/含める/require_once/include_once
ファイルのロードでは、ロードされるファイルの種類に関係なく、ターゲット ファイル内のコードのみがロードされて実行されます。

ファイルのロードは実行フェーズに属します。require などのステートメントが実行されると、ファイルのコードがロードされます。
  コンパイルして実行し、require ステートメントの位置に戻り、次のステートメントの実行を続けます。
【知らせ】
  ロードの開始時に、まず PHP モードを終了します。
  次に、ターゲット ファイルのコードをロードし、コードを実行します。
  完了したら、再度 PHP モードに入ります。
require: 処理が失敗し、E_COMPILE_ERROR エラーが生成され、スクリプトが終了します。
include: 処理は失敗し、E_WARNING エラーが生成され、スクリプトは実行を継続します。

#require_once/include_once の使用は推奨されません


/* 【相対パス】 */
現在ブラウザによってどのスクリプトが要求されているか、現在位置はどのスクリプトに属しているか。
./file と file はどちらも現在のディレクトリ内のファイル file を表します。
ファイルの状況 (ファイルをネストしてロードする場合):
現在のディレクトリにファイルが見つからない場合は、コード ファイルが存在するディレクトリで検索を続けます。
ファイルが現在のディレクトリで見つかった場合、コード ファイルが配置またはロードされているディレクトリでは検索されません。
__DIR__ スクリプト ファイルが配置されているディレクトリ
__FILE__ スクリプト ファイルのパス

include_path はファイル検索ディレクトリをロードします
  set_include_path() は include_path を設定します。パラメータとして文字列を使用し、複数存在する可能性があります。
  この関数によって設定されたパスは、現在のファイルに対してのみ有効です。
  この設定は、直接書き込まれていないファイル パスを検索する場合にのみ有効です。
  新しい include_path を設定すると、元の include_path が上書きされます

  get_include_path() 現在の include_path 設定項目を取得します。パラメータはありません

  パス区切り文字、Windows ではセミコロン、Linux ではコロン
  事前定義された定数 PATH_SEPARATOR を使用して現在の区切り文字を取得します

ファイル名を直接記述する場合:
  1. include_pathで設定
  2. 現在のディレクトリ
  3. コードが配置されているファイルのディレクトリ
ファイル名の前にパスが付いている場合は、パスに基づいて直接検索され、include_path は直接無視されます。


/* 【戻る】 */
Return と require を組み合わせて、ファイルの内容を返します。Return はロードされたファイルに書き込まれます。
return は通常のスクリプト ステートメントとしてスクリプトの実行を終了できます。
return は関数の対応する値を返すことができます


/* [スクリプトの実行を終了して遅延させる] */
死ぬ/終了する
return はスクリプトの実行を終了することです。
die and exit 直ちにスクリプトの実行を終了します
die("これまで"); この関数内の文字列を出力できます。
sleep()の遅延(単位:秒)
  デフォルトの遅延は最大 30 秒で、PHP 構成によって max_execution_time を変更できます。
  例: sleep(12);
usleep() は、指定されたマイクロ秒数だけ実行を遅らせます。
time_sleep_until は、指定された時間までスクリプトをスリープさせます。


/* [関数] */
1. 関数はコンパイル時に宣言されるため、最初に定義してから呼び出す必要があります。定義と呼び出しの間に順序関係はありません。
2. ファイルはコードの単なるキャリアであり、プログラムはメモリ内で実行されます。
3. ロードする必要のあるファイルに関数定義が含まれている場合は、最初にファイルをロードする必要があります。ロードしないと呼び出しがエラーになります。
4. 関数の定義は他のコード セグメントに出現する可能性があり、関数はコンパイル段階では実行されません。
  実行時にのみ定義されます。独立して定義された場合にのみ、メモリ内でコンパイルされます。
  他の関数の本体にある場合は、外側の関数が呼び出されたときにのみ定義され、有効になります。
5. 関数名は大文字と小文字を区別しません
6. システム関数を含め、重複する名前は許可されません。
7. 【変数機能】
  関数名は他の変数に置き換えることができます
  $func_name = "sayHello";
  $func_name(); //この時点でsayHello()関数を呼び出します。
  注: 変数は呼び出し時にのみ使用でき、定義時には使用できません。
8.関数を呼び出す関数名として変数を使用できるほか、配列要素の値も使用可能!
9. 仮引数引数、実引数引数
  パラメータに null を渡すことができます。これは、仮パラメータが値を渡したくないことを示します。
  仮パラメータは値または参照によって渡すことができます。パラメータを参照で渡すには、関数を定義するときに仮パラメータの前に & 記号を追加する必要があります。このとき、呼び出し元の関数の実際のパラメータは変数である必要があります。
  使用する配送方法はどのように選択しますか?
    a. 元のデータの整合性を確保する必要がありますか?
    b. 効率を上げる必要はありますか?
    c. ビッグデータ参照を渡すとメモリを節約できる
10. パラメータのデフォルト値
    a. 関数パラメータのデフォルト値は、変数ではなく、決定された値である必要があります。
      呼び出し前に定数が定義されている限り、定数をパラメータのデフォルト値として使用できます。
    b. 関数には複数のデフォルト値を設定できます。デフォルト値を持つパラメータはパラメータ リストの最後に配置することをお勧めします。
      このように、関数を呼び出すとき、デフォルト値を持つパラメータは割り当てられず、そうでない場合はエラーが発生します。
    c. デフォルトのパラメータは、配列や null などの非スカラー型にすることができます。
    d. デフォルトのパラメータは、デフォルト以外のパラメータの右側に配置する必要があります。
11. パラメータの数
  a. 仮パラメータの数が実パラメータの数よりも多くなります。
    警告レベルのエラーを報告します。NULL に置き換えられます。
  b. 仮パラメータより実際のパラメータが多い
    エラーを報告せず、順番に仮パラメータに値を割り当てます。
  c. パラメータの数が不確かである
    1) 単一の仮パラメータが定義されているわけではなく、常に仮パラメータよりも多くの実パラメータが存在します。
    2) [パラメータの数を可変]
      func_get_args() は、現在の関数が呼び出されたときにすべての実パラメータの値を取得し、すべての実パラメータ値で構成される配列を返します。
      func_get_arg() は、インデックス値によって識別される実際のパラメータの値を取得します。例: func_get_arg(0)
      func_num_args() はすべての引数の数を取得します
12. 【return】戻り値
  a. 関数の戻り値は 1 つだけですが、配列を返すことでも同様の結果が得られますが、return ステートメントは複数指定できます。
  b. return ステートメントは関数を直ちに終了し、関数を呼び出したコード行に制御を返します。
  c. 配列やオブジェクトを含む任意の型を返すことができます。
  d. 関数の戻りも値の転送と参照の転送に分けることができます(変数のみを返すことができます)。
    1) デフォルトは値渡し方式です
    2) リファレンス転送方法:
      - 関数を定義する場合、関数名の前に & を追加すると、その関数が参照を返すことができることを示します
      - 関数を呼び出すときは、関数名の前に & を追加して、関数によって返される参照を取得します。
        このとき、関数の外で戻り値を変更すると、関数内の戻り変数の値も変更されます。
      - 関数が参照を返す必要がある場合は、変数を返す必要があります。
      - 関数から参照を返すには、関数を宣言するときと戻り値を変数に代入するときの両方で参照演算子 & を使用する必要があります。
        関数 &returns_reference(){$someref を返す;}
        $newref =& returns_reference();
    3) リターンリファレンスの役割


/* [変数のスコープ] */
a. グローバル変数とローカル変数
  1) スコープ間に重複はありません。つまり、異なるスコープ内の変数は相互にアクセスできません。
  2) グローバル スコープ - 関数の外側の領域
  3) ローカル スコープ - 関数内の領域。各関数は独立したスコープです。

b. スーパー グローバル変数は、グローバルとローカルの両方で使用できます。これらはすべて配列変数です。
  $GLOBALS $_COOKIE $_ENV $_FILES $_GET
  $_POST $_REQUEST $_SERVER $_SESSION
c.$GLOBALS
  1) スーパーグローバル変数は存在できませんが、スーパーグローバルデータは存在する可能性があります。
  2) 必要なデータをスーパーグローバル変数の配列に入れますが、$GLOBALS を一律に使用します
  3) $GLOBALS 機能
    - 各グローバル変数は $GLOBALS! の要素に対応します。
      グローバルが追加されるたびに、同じ名前の要素が $GLOBALS! に自動的に追加されます。
      同様に、要素が追加されるたびに、通常は関数内でグローバル変数も追加されます。
    - 更新や削除など、行われた変更は別の変更にもマッピングされます。
      関数内のグローバル変数にアクセスするには、$GLOBALS を使用するだけです。
    - 出現したグローバル変数は$GLOBALS配列から取得可能
  4) PHP ライフサイクルでは、関数本体の外で定義されたいわゆるグローバル変数を関数内で直接取得することはできません。
4) グローバルキーワード (非推奨)
  ローカル変数を同じ名前のグローバル変数への「参照」として宣言してください。定数参照の受け渡しと同等
    グローバル $var; // $var = &$GLOBALS['var'];
    $GLOBALSとは異なります! ! !
  global は、関数の外部にある実際の変数ではなく、関数の外部にある変数を指すエイリアス変数を関数内に作成します。
  $GLOBALS は実際には外部変数と呼ばれ、関数の内部と外部で常に一貫性があります。
  global の役割はグローバル変数を定義することですが、このグローバル変数は Web サイト全体ではなく、現在のページ (include または require 内のすべてのファイルを含む) に適用されます。
d.
  1) スコープは変数にのみ適用され、定数には適用されません
  2) ロードされたファイルで定義された変数のスコープは、ロードされた場所によって異なります。
    関数の外部でロードされた場合はグローバル、関数の内部でロードされた場合はローカルです。


/* [変数のライフサイクル] */
1. スクリプトが終了するとグローバル変数が消える
2. 関数を実行するとローカル変数が消える
3. 静的変数
  静的キーワード
    静的変数はローカル関数スコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても、その値は失われません。
    静的変数は 1 回だけ初期化され、他のローカル変数は呼び出されるたびに再割り当てされます。
    静的に宣言された静的変数のライフサイクルは永久に続きます。/* [反復と再帰] */
反復は再帰よりも効率的です。
反復はアイデア (アルゴリズム) であり、その構造と使用法はループに似ています。
再帰とは、大きな問題を小さな問題に分割し、小さな問題を一つ一つ解決して大きな問題を解決する考え方(アルゴリズム)です
  大小の問題に対する解決策には一貫性が必要です。
  再帰の構造と構文は、図の関数に反映されています。関数本体は関数自体を呼び出します。
  再帰的終了: 問題が解決できる場合、再帰する必要はありません。


/* [匿名関数/クロージャ関数] */
クロージャとも呼ばれる匿名関数を使用すると、名前を指定せずに関数を一時的に作成できます。

1. 無名関数を定義する場合、関数名を追加する必要はありません。
2. PHP は匿名関数をオブジェクトとして管理します。
3. 匿名関数は変数に格納する必要があります。
4. 匿名関数は Closure クラスを通じて実装されます。
5.関数をパラメータや関数の戻り値として使用できます
6. 関数を宣言するとき、use($param) を使用して関数の外の変数を関数に渡したり、変数参照を使用してクロージャを実装したりできます。
7. 変数を使用して関数を参照できます
$func = 関数 ($e) {
  $e をエコーし​​ます。
}; //変数の代入と同様に、最後はセミコロンで終わる必要があります。
var_dump($func); //匿名関数を使用する
$func('ITCAST'); //関数呼び出し
  これは可変個引数関数ではなく、オブジェクトです。クロージャ クロージャ クラス
// 構文を使用する
匿名関数は、どこにでも出現する可能性がある値の概念を優先します。
use を使用すると、匿名関数にその外側のスコープ内の変数を使用させることができます。グローバルではありません!
使用とグローバルの違い:
  use は外部スコープの変数を使用します
関数 out() {
  $v = "インアウト";
  $func = function () use (& $v) {
    var_dump($v);
  }
}
  使い方はパラメータの自動受け渡しと同様で、値や参照の受け渡しもサポートしています。
//効果
  多くの場合、「一時関数」(どこかでのみ呼び出される関数)と呼ばれます。
  例えば:
    PHP には array_map() 関数があり、その機能は関数内の各要素に対して特定の関数を呼び出すことです。
    演算結果(配列) = array_map (演算関数, 演算配列);
    $result_arr = array_map(function ($v) {return $v3}, $arr);

//クロージャの使用例
関数closureCreater() {
  $x = 1;
  return function($fun = null) use(&$x) {//値を参照で渡す
    エコー "<br />" 。
    $fun と $fun();
  };
}

$x = "こんにちは";
$test = closeCreater();
$test();
$test(function(){ echo "クロージャ テスト 1"; });
$test(function(){ echo "クロージャ テスト 2"; });
$test(function() use($x){ echo "<br />".$x;});

//関数を配列要素として保存
$x = '外部パラメータ';
$arr = 配列();
$arr[] = function($str)use($x){ return $str.$x };
echo $arr[0]('arr で楽しみをテスト,');


/* [配列] */
連想配列: キーと値が関連付けられており、キーは値の論理的な意味を表します。
インデックス配列: キーと値は関連しておらず、キーは値の位置を表します。通常、添字は 0 から始まり、要素ごとに増分されます。
count($var [,$mode]) //配列の要素数をカウントする
  $mode はオプションです。1 または true に設定すると、再帰的な統計が実行されます。
  $var が配列ではない場合は 1 を返します。$var が初期化されていないか、null または空の配列に等しい場合は 0 を返します。

//キー名の使用
整数値キーは引用符で囲む必要はありません ($arr[1])
文字列の数値キーは引用符で囲む必要はありません ($arr = array('1'=>'abc'); $arr[1])
連想配列、文字列キーは引用符で囲む必要があります ($arr = array('a'=>'aaa'); $arr['a'])
連想配列、二重引用符で囲まれた変数を解析します。引用符は必要ありません ($arr = array('a'=>'aaa'); "$arr[a]")

/* [ポインタ] */
current/pos は、ポインタを移動せずに、内部ポインタが現在指している配列要素の値を返します。
key は、ポインタを移動せずに、配列内の現在のセルのキー名を返します。
next は、配列内の内部ポインタを 1 つ前に移動し、移動後の現在のセルの値を返します。最初に移動してから値を取得します。
prev は、配列の内部ポインタを 1 ビット巻き戻し、移動後の現在のセルの値を返します。
end は、配列の内部ポインタを最後の要素にポイントし、最後の要素の値を返します。
リセットは、配列の内部ポインタを最初の要素にポイントし、最初の配列要素の値を返します。

それぞれ、配列内の現在のキーと値のペアを返し、配列ポインターを 1 ステップ進めます。
      返されるのは、キーと値で構成される長さ 4 の配列です。添字 0 とキーはキーを表し、添字 1 と値は値を表します。
        each() を実行した後、配列ポインタは配列内の次のセルに留まります。
          または、配列の終わりに達したときに最後のセルに留まります。
          each を使用して配列を再度反復処理する場合は、reset() を使用する必要があります。

  1. key() を除く上記のポインタ操作関数は、ポインタが配列の外に移動されると false を返します。 key() が外部に移動されると、null が返されます。
  2. ポインタが不正な場合、次へ/前への操作は実行できませんが、リセット/終了操作は実行できます。
  3. current/next/prev は、空のユニット (0 または "") に遭遇した場合にも false を返します。しかし、それぞれはそうではありません!

list は、配列内の値をいくつかの変数に割り当てます。 list() は関数ではなく言語構造です
      数値インデックス付きの配列でのみ使用でき、数値インデックスは 0 から始まると想定されます。
      /* 複数の変数の値を交換するために使用できます */ list($a, $b) = array($b, $a);
  例: list($ Drink, , $power) = array('coffee', 'brown', 'caffeine');

1. 配列がコピーされると、そのポインターの位置もコピーされます。
  特殊なケース: 配列ポインタが不正な場合、コピーされた配列ポインタはリセットされますが、元の配列ポインタは変更されません。【ポインタの問題】
    最初に書いた人が新しい価値空間を切り開くでしょう。変数(配列変数)の値が誰に渡されるかは関係ありません。
    配列関数 current() は書き込み操作として定義されているため、問題が発生します。
    foreach が走査するのは配列のコピーであり、それが書き込まれると、新しい値空間が開かれます。
      つまり、ポインターの問題は、foreach ループ本体が元の配列に書き込む場合にのみ発生します。
      新しいスペースを開くときにポインタが不正な場合、ポインタは初期化されます。
2. ポインタの位置に問題がある場合は、reset() で初期化することで問題を解決できます。


/* [配列を走査する] */
* 最初に要素を検索し、次にキーと値を取得します

フォーリーチ
  foreach (array_expression as [$key =>] & $value)
   foreach の実行が開始されると、配列内のポインターは自動的に最初の要素を指します。
   要素情報を取得後、ポインタを移動してループ本体を実行します。
   1. foreach 自体のループ構造、break と continue が foreach に適している
   2. foreach は、ループの代替構文をサポートします。
   3. $value は要素の値を格納する変数であり、これを変更しても配列の要素の値は変更されません。
   4. $value は要素値の参照コピーをサポートしています。$value の前に & を追加するだけです
   5. $key は参照の受け渡しをサポートしていません
   6. foreach が走査するのは元の配列のコピーであり、ループ本体内の配列に対する操作は元の配列に対する操作です。
      つまり、配列に対するループ本体の操作は元の配列には影響しますが、トラバーサルには影響しません。
      まず走査のために配列をコピーします

その間...リスト...それぞれ
while (list($key, $val) = mysql_fetch_row($result)) = each($arr) {
 echo "$key => $valn";
}



/* [配列関数] */
//計算
count 配列内のセルの数またはオブジェクト内の属性の数をカウントします。
array_count_values は、配列内のすべての値の出現数をカウントします。
array_product は配列内のすべての値の積を計算します
array_sum は配列内のすべての値の合計を計算します
range は、指定された範囲内のセルを含む配列を作成します

//配列の内容を取得する
array_chunk は配列を複数に分割します
  array array_chunk(array $input, int $size[, bool $preserve_keys])
array_filter はコールバック関数を使用して配列内のセルをフィルタリングします
array_slice は配列からセグメントを取得します
  array array_slice($arr, $offset [,$len [,$preserve_keys]])
array_keys は配列内のすべてのキー名を返します
  array array_keys(array $input[,mixed $search_value[, bool $strict]] )
  オプションのパラメータ search_value が指定されている場合、値のキー名のみが返されます。それ以外の場合は、入力配列内のすべてのキーが返されます。
array_values は、数値インデックス付きの配列内のすべての値を返します

array_merge は 1 つ以上の配列をマージします
  1 つの配列の値が前の配列に追加されます。
  入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。
  配列に数値キー名が含まれている場合、後続の値は元の値を上書きせず、それらの値に追加されます。
  配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。 
array_merge_recursive は 1 つ以上の配列を再帰的にマージします

//検索
in_array は配列内に値が存在するかどうかをチェックします
  bool in_array(mixed $needle, array $haystack[, bool $strict])
array_key_exists は、指定されたキー名またはインデックスが配列内に存在するかどうかを確認します。
  isset() は配列内の NULL 値に対して TRUE を返しませんが、array_key_exists() は TRUE を返します。
array_search は、指定された値の配列を検索し、成功した場合は対応するキーを返します。

array_combine は、1 つの配列の値をキーとして使用し、別の配列の値を値として使用して配列を作成します。
  2 つの配列の要素の数が異なる場合、または配列が空の場合は FALSE を返します。
array_rand は、配列から 1 つ以上のユニットをランダムに取得し、キー名またはキー名で構成される配列を返します。添字は自然にソートされます。
array_fill は、指定された値で配列を埋めます。
  array_fill($start, $num, $value)
array_flip は配列内のキーと値を交換します
array_pad は、指定された長さまで配列に値を埋め込みます。
array_reverse は、セルを逆順にした配列を返します
array_unique は配列から重複した値を削除します
array_splice は配列の一部を削除し、他の値に置き換えます。

implodeは、特定の文字列を使用して配列要素の値を文字列に連結します。
explode($delimiter, $str [,$limit]) //ある文字列を使用して別の文字列を分割します
  $delimiter を空の文字列 "" にすることはできません

array_map は、指定された配列の単位にコールバック関数を適用します。要素の値のみを処理でき、複数の配列を処理できます。
  コールバック パラメーターが null に設定されている場合、複数の配列が 1 つの多次元配列にマージされます。
array_walk は配列内の各メンバーにユーザー関数を適用します。キーと値の両方を処理できます。foreach と同じ機能があります。
  bool array_walk ( array &$array , コールバック $funcname [,mixed $userdata ] )

//スタック: 後入れ先出し
スタックをプッシュおよびポップすると、インデックスの添字が再割り当てされます。
array_push は、1 つ以上の要素を配列の末尾にプッシュします (プッシュ)
array_pop は配列の最後のユニットをポップします (スタックをポップします)。この関数を使用すると、配列ポインタがリセットされます (reset())。

//キュー: 先入れ先出し
キュー関数によるインデックス添字の再割り当て
array_unshift は、配列の先頭に 1 つ以上のセルを挿入します。
array_shift は、配列の先頭の要素を配列の外に移動します。この関数を使用すると、配列ポインタがリセット (reset()) されます。//ソート関数
sort 配列をソートする
rsort 配列を逆順にソートします
asort は配列をソートし、インデックス関係を維持します
arsort は配列を逆順にソートし、インデックス関係を維持します。
ksort は配列をキーでソートします
krsort は配列をキー名によって逆順にソートします
usort は、ユーザー定義の比較関数を使用して配列内の値を並べ替えます
uksort は、ユーザー定義の比較関数を使用して配列内のキーをソートします。
uasort は、ユーザー定義の比較関数を使用して配列内の値を並べ替え、インデックスの関連付けを維持します。
natsort は「自然ソート」アルゴリズムを使用して配列をソートします
natcasesort は、「ナチュラルソート」アルゴリズムを使用して、大文字と小文字を区別しない方法で配列をソートします。
array_multisort 複数の配列または多次元配列をソートします
shuffle 配列をシャッフルする
  パラメーターを参照によって渡し、ブール値を返します。
  インデックスキー名を再割り当てし、元のキー名を削除します

//差分セット
array_udiff_assoc は、インデックス チェックを使用して配列の差分セットを計算し、コールバック関数を使用してデータを比較します。
array_udiff_uassoc は、インデックス チェックを使用して配列の差分セットを計算し、コールバック関数を使用してデータとインデックスを比較します。
array_udiff はコールバック関数を使用してデータを比較し、配列の差分を計算します。
array_diff_assoc は、インデックスチェックを使用して配列の差分を計算します。
array_diff_key は、キー名の比較を使用して配列の差分を計算します。
array_diff_uassoc は、インデックス チェックを実行するユーザー指定のコールバック関数を使用して配列の差分を計算します。
array_diff_ukey は、コールバック関数を使用してキー名を比較し、配列の差分セットを計算します。
array_diff は配列の差分を計算します
//交差点
array_intersect_assoc は、インデックスをチェックして配列の交差を計算します。
array_intersect_key は、キー名の比較を使用して配列の共通部分を計算します。
array_intersect_uassoc は、インデックスをチェックして配列の交差を計算し、コールバック関数を使用してインデックスを比較します。
array_intersect_ukey は、コールバック関数を使用してキー名を比較し、配列の交差部分を計算します。
array_intersect は配列の交差を計算します
array_key_exists は、コールバック関数を使用してキー名を比較し、配列の共通部分を計算します。
array_uintersect_assoc は、インデックスチェックを使用して配列の交差を計算し、コールバック関数を使用してデータを比較します。
array_uintersect は配列の共通部分を計算し、コールバック関数を使用してデータを比較します

extract($arr [,$type [,$prefix]]) は、配列から現​​在のシンボル テーブルに変数をインポートします (結合された配列 $arr をパラメーターとして受け入れ、キー名を変数名として使用し、値を変数として使用します)価値)
Compact($var [,...]) は、変数名とその値を含む配列を作成します (変数名がキーになり、変数の内容がキーの値になります)




/* [疑似タイプ] */
「mixed」は、パラメーターが複数の (ただし、すべてではない) 異なる型を受け入れることができることを示します。
数値は、パラメータが整数または浮動小数点数であることを示します。
callback コールバック関数
戻り値の型として void void は、関数の戻り値が役に立たないことを意味します。
      パラメータリストとしての void は、関数がパラメータを受け入れないことを意味します。


/* [データベース操作] */
#接続認証
mysql_connect はデータベースに接続して認証します
#SQL文の送信と実行結果の受信
mysql_query は SQL ステートメントを送信します
    select、show、explain、describe ステートメントが正常に実行された場合はリソース識別子のみが返され、他のステートメントが正常に実行された場合は true が返されます。実行が失敗した場合は false を返します。
#処理結果
mysql_fetch_assoc は結果セットから行を連想配列としてフェッチします
    それぞれのアイテムと同様に、一度に 1 つのアイテムのみが取得されます。
  結果セットレコードポインタ
mysql_fetch_row は結果セットから行を列挙配列としてフェッチします
mysql_fetch_array は結果セットから行を連想配列、数値配列、またはその両方としてフェッチします。
  array mysql_fetch_array ( resource $result [, int $result_type ] )
  オプションのパラメータ result_type のオプション値は次のとおりです: MYSQL_ASSOC、MYSQL_NUM、および MYSQL_BOTH (デフォルト)
mysql_free_result は結果メモリを解放します
#リンクを閉じる
mysql_close は接続を閉じます


/* [クラスとオブジェクト] */
# メンバー:
  クラスメンバー: クラス定数、静的プロパティ、静的メソッド
  オブジェクトメンバー: 非静的プロパティ、非静的メソッド
  # クラスにはそれ以外のものを含めることはできません。 ! !

# クラス名、メソッド名、属性名は大文字と小文字が区別されません
# $this はこのオブジェクトを表し、self はこのクラスを表し、parent は親クラスを表します
# クラスと関数の両方を事前にコンパイルすることができます (最外層としてのみ)
# クラスの定義は単一の PHP ブロック内にある必要があり、複数の PHP タグで分割することはできません

// 構築方法
- コンストラクターを持つクラスは、新しいオブジェクトが作成されるたびに最初にこのメソッドを呼び出します。
void __construct([ 混合 $args [, $... ]] )
- コンストラクタに必要なパラメータをnewでインスタンス化する場合、クラスにパラメータ値を追加します。
- コンストラクターは手動で呼び出すこともできます。
- バージョン 5.3.3 より前では、クラス名と同じ名前のメソッドがコンストラクターとしてサポートされていました。
- 2 つが競合する場合、__construct が優先されます。

// 破壊方法
- デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。
void __destruct(void)
# 機能: オブジェクトが占有しているリソースを解放します。
# 電話をかけるタイミング
  - オブジェクトを含むすべてのリソースはスクリプトの終了時に解放されます。
  ・ オブジェクトを手動で削除する場合
  - オブジェクトを保持する変数に新しい値(nullを含む任意の値)が代入された場合
  - exit() を使用してスクリプトを終了するときにも呼び出されます。

// 静的メンバー (静的キーワード)
  - クラスのメンバーまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできます。
  - 静的メンバー (プロパティまたはメソッド) はクラスに属しているため、$this または -> を介してアクセスすることはできません。- 静的メンバーはすべてのオブジェクトで共有され、クラスに属します。
  - 静的メンバーはクラスで呼び出され、非静的メンバーはオブジェクトで呼び出されます。
# 静的プロパティ
  - 静的プロパティには、-> 演算子を使用してオブジェクトからアクセスできません。
  - 静的プロパティは文字値または定数にのみ初期化でき、式は使用できません。 したがって、静的プロパティを整数または配列に初期化することはできますが、別の変数や関数の戻り値、またはオブジェクトを指すことはできません。
# 静的メソッド
  - 静的メソッドではオブジェクトを呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。
  - ::メソッドを使用して非静的メソッドを呼び出すと、E_STRICTレベルのエラーが発生します。

// アクセス解析演算子 (::)
  - 静的メンバー、メソッド、定数にアクセスするために使用でき、クラス内のメンバーやメソッドをオーバーライドするためにも使用できます。 
  - これらの静的メンバー、メソッド、および定数にクラスの外部からアクセスする場合は、クラス名を使用する必要があります。 
  - 2 つの特別なキーワード self とparent は、クラス内のメンバーまたはメソッドにアクセスするために使用されます。

//アクセス解析
- オブジェクトのメンバーは、内部的には $this によって指定され、外部的にはオブジェクト名によって指定されます。両方とも、プロパティにアクセスするときに $ を追加する必要はありません。
  オブジェクト名->プロパティ名 オブジェクト名->メソッド名() $this->プロパティ名 $this->メソッド名()
- クラスのメンバーは、内部的には self またはparentを介して指定され、外部的にはクラス名を介して指定されます。これらはすべて :: を使用してアクセスされ、属性にアクセスする場合は $ が必要です。
  クラス名::$属性名 クラス名::メソッド名() self::$属性名 self::メソッド名()
- 特殊: クラス メンバーには、オブジェクトを通じてアクセスすることもできます。 (推奨されません)
  オブジェクト名::$class 属性名 $this::$class 属性名 オブジェクト名::$class メソッド名() $this::class メソッド名()
# オブジェクト メンバーにアクセスするには -> を使用し、クラス メンバーにアクセスするには::

- 静的か非静的かにかかわらず、クラスまたはオブジェクトを通じてメソッドにアクセスできます。
- 静的プロパティにはクラスを通じてアクセスし、静的メソッドにはオブジェクトを通じてアクセスします。
- $this は、オブジェクトを使用して非静的メソッドを呼び出す場合にのみ使用できます。
- 静的メソッドでは $this を使用できません。
- クラスはオブジェクト メソッドを呼び出すことができますが、メソッド内に $this を含めることはできないことに注意してください。
- 非静的メソッドは静的プロパティまたは静的メソッドを呼び出すことができますが、その逆はできません。

// クラス定数
- 定数の値は常に同じままです。
- 定数を定義および使用するときに $ 記号を使用する必要はありません。
- 定数の値は固定値である必要があり、変数、クラス属性、またはその他の操作 (関数呼び出しなど) の結果であってはなりません。
# 定義: const 定数名 = 定数値;
- public などのアクセス変更修飾子を追加する必要はありません
- クラス定数はクラスに属し、クラス名::クラス定数またはself::クラス定数を使用してアクセスされます。

// オブジェクトを自動的にロードします
- まだ定義されていないクラスを使用しようとすると、__autoload関数が自動的に呼び出されます。
- 使用されているクラス名ファイルを自動的にロードします (クラス名に基づいて対応する名前のファイルを検索します。そのため、クラス名はクラス ファイル名と一致している必要があります)
- クラスをロードする必要があるすべてのファイルには __autoload 関数が必要です
- __autoload 関数を別のファイルに記述し、クラスを使用する必要があるファイルごとに関数ファイルを要求します。
- __autoload パラメータはクラス名です
関数 __autoload($class_name) {
  require_once $_SERVER["DOCUMENT_ROOT"] "/class/$class_name.php";
}
  // $_SERVER["DOCUMENT_ROOT"] 現在実行中のスクリプトが配置されているドキュメント ルート ディレクトリ
- クラス名を使用して、そのクラスが配置されているファイル名を推測できます。
・ プロジェクト内にオートロード関数が複数ある場合は、ロードを完了できる共通の関数を定義し、spl_autoload_registerを使用してその関数の前に登録してください。
# spl_autoload_register
- __autoload() 関数を登録する
bool spl_autoload_register ([コールバック $autoload_function ] )
・自動ロード機能は複数登録でき、最初に登録したものが先に実行されます。
・ オートロード機能を登録すると、__autoloadは無効になります。
- 関数を登録する場合、パラメータは関数名です (引用符に注意してください)。メソッドを登録する場合、パラメータは配列です。
# クラスまたはオブジェクトを登録するメソッドが自動ロード メソッドである場合、パラメータは配列である必要があります。
spl_autoload_register(array(__CLASS__, '__autoload'));
__CLASS__ は現在のクラス名を表します。$this がオブジェクトで使用できる場合は、詳細についてはマニュアルを参照してください。

// シリアル化 (シリアル化)
# データ送信は全て文字列型
# リソースタイプを除き、すべてシリアル化可能
# シリアル化でデータを保存すると、データそのものとデータ型が保存されます。
機能: 1. ネットワーク経由でデータを送信するとき。 2. ディスク上に配列またはオブジェクトを配置するとき。
# 連載
シリアライズは値の保存可能な表現を生成します
文字列シリアル化 (混合 $value)
- 値を表すバイト ストリームを含む文字列を返し、どこにでも保存できます。
- 型や構造を失うことなく、PHP での値の保存または受け渡しが容易になります。
# デシリアライズ
unserialize は保存された表現から PHP 値を作成します
混合アンシリアル化 ( string $str [, string $callback ] )
- 単一のシリアル化された変数を操作し、それを PHP 値に変換し直します。


# ファイルの読み取りおよび書き込み操作
- file_put_contents は文字列をファイルに書き込みます
int file_put_contents($file, $data [,$flags])
  $flags: FILE_USE_INCLUDE_PATH (上書き)、FILE_APPEND (追加)
- file_get_contents はファイル全体を文字列に読み取ります
string file_get_contents($file [, bool $use_include_path [,int $offset [,int $maxlen]]])

#オブジェクトのシリアル化
- オブジェクト内のデータ、つまり非静的プロパティのみをシリアル化できます。# オブジェクトを逆シリアル化する前にクラスをロードする必要があり、自動ロード メカニズムをトリガーすることもできます。

__sleep はシリアル化するプロパティをシリアル化します。
    - コミットされていないデータ、または同様のクリーンアップ操作をコミットして、オブジェクトを部分的にシリアル化します。
    - シリアル化する必要があるオブジェクト内のすべての変数の名前を含む配列を返します。
__wakeup デシリアライズの際、オブジェクトが必要とするリソースを事前に準備する
    - データベース接続を再確立するか、その他の初期化操作を実行します。
  パブリック関数 __sleep() {
    return array('サーバー', 'ユーザー名', 'パスワード', 'db');
  }
  パブリック関数 __wakeup() {
    $this->connect();
  }

//オブジェクトの継承
クラスのサブクラス名は親クラス {} を拡張します
オブジェクトがサブクラスのオブジェクトである場合、それは親クラスのオブジェクトでもあります。
単一継承: クラスは 1 つの親クラスのみを継承でき、同時に複数のクラスを継承できません。ただし、親クラスは複数のサブクラスに継承できます。

instanceof は、オブジェクトが特定のタイプのオブジェクトであるかどうかを判断します
  オブジェクト名 クラス名のインスタンス

// アクセス制御
public public (継承チェーン、このクラス、および外部からアクセス可能)
protected protected (継承チェーンのみ、このクラスはアクセス可能)
private private (このクラスのみアクセス可能)
メンバ定義箇所とアクセス箇所により判断します。
# 互換性の問題
- 属性を宣言する場合、var キーワードはデフォルトでパブリック権限を宣言します。
- メソッドを宣言するときは、アクセス修飾子を省略し、デフォルトで public 権限を使用します。

// オーバーライド
$this はこのオブジェクトを表し、それを呼び出す人はそのオブジェクトを表します。
- 継承時に、サブクラスのメンバー名が親クラスのメンバー名と競合する場合、サブクラスのメンバーが親クラスのメンバーを上書きします。
- プロパティとメソッドはどちらもサブクラスによってオーバーライドできます。
- 親クラスのメソッドまたは属性がサブクラスのニーズを満たさなくなった場合、それらを書き直す必要があります。
・変則命名のため書き直す場合もあります。

プライベート プロパティはオーバーライドできず、各プライベート プロパティはログに記録されます。属性名を記録するときに、クラスも記録されます。

組み込み関数がオーバーライドされると、親クラスのメソッドを呼び出すことができます。たとえば、親クラスのコンストラクターparent::__construct()を呼び出します。

# 書き換え制限
訪問制限:
  サブクラスのメンバーのアクセス制御は、親クラスのアクセス制御と同等か、それより弱くなければなりません。
メソッドパラメータの制限:
  パラメータの数は同じである必要がありますが、パラメータ名は異なっていてもかまいません。

# $これにより原則が決まります
$this はメソッドを呼び出すオブジェクトであり、メソッドの実行環境オブジェクトを表します。
  - オブジェクト呼び出し
  -環境の伝達。 $this の値が現在の呼び出し (静的呼び出し) 中に決定できない場合、静的呼び出しのオブジェクト環境が呼び出されたメソッドに渡されます。
$this は常にこのオブジェクトを表すわけではなく、メソッドの実行環境によって決まります。

# 最後の
親クラスのメソッドがfinal宣言されている場合、子クラスはそのメソッドをオーバーライド(オーバーライド)できません。
クラスがfinalと宣言されている場合、そのクラスを継承することはできません。
ただし、final キーワードを含むクラスもインスタンス化できます。
#抽象クラス
キーワード: 抽象
抽象クラスを直接インスタンス化することはできません。最初に抽象クラスを継承してから、サブクラスをインスタンス化する必要があります。
抽象クラスには、少なくとも 1 つの抽象メソッドが含まれている必要があります。非抽象クラスには抽象メソッドを含めることはできません。
クラス メソッドが抽象として宣言されている場合、具体的な関数実装を含めることはできません。抽象メソッドには中括弧やメソッド本体を含めることはできません。
抽象クラスを継承する場合、サブクラスは抽象クラス内のすべての抽象メソッドを実装する必要があります。
  つまり、サブクラスは、抽象親クラス内のすべての抽象メソッドをオーバーライドする必要があります。
さらに、これらのメソッドの可視性は、抽象クラスと同じ (またはより緩やか) でなければなりません。
  つまり、抽象クラス内の抽象メソッドが保護されていると宣言されている場合、サブクラスに実装されているメソッドは保護またはパブリックとして宣言する必要があり、プライベートとして定義することはできません。
・ 抽象クラスのサブクラス内の通常メソッドは、他のクラスと同様に実行されます。
- 関数:
  1. 継承は、パブリック操作を統合する拡張クラスです。
  2. 制限構造(規範)。サブクラスの構造を標準化します。

//インターフェース
キーワード: インターフェース
- オブジェクトがオブジェクトと対話するために提供する方法はインターフェイスです。
- インターフェイスを使用して、クラスが実装する必要があるメソッドを指定できますが、これらのメソッドの特定の内容を定義する必要はありません。
- インターフェースを介してインターフェースを定義することは標準クラスを定義することと同じですが、その中で定義されているメソッドはすべて空です。 
- インターフェイスで定義されるすべてのプロパティとメソッドは public である必要があり、public キーワードは省略できます。
・ インターフェース内でも定数(const)を定義できます。インターフェイス定数とクラス定数はまったく同じように使用されます。
  :: を使用してアクセスできます。インターフェース名::定数名、実装クラス::定数名。
  これらはすべて固定値であり、サブクラスまたはサブインターフェイスで使用できますが、変更することはできません。
- インターフェイスではプロパティを定義できません。
# インターフェースを定義する
インターフェイス インターフェイス名 {
  インターフェイスのコンテンツ (パブリック メソッド宣言のコレクション)
}
# インターフェースの実装
- インターフェイスを実装するには、implements 演算子を使用できます。
- クラスは、インターフェイスで定義されたすべてのメソッドを実装する必要があります。実装しない場合は、致命的なエラーが報告されます。
- 複数のインターフェースを実装する場合は、カンマを使用して複数のインターフェースの名前を区切ることができます。
・ 複数のインターフェースを実装する場合、インターフェース内のメソッドに同じ名前を付けることはできません。
- extends 演算子を使用してインターフェイスを継承することもできます。
class クラス名はインターフェイス名を実装します {
  インターフェースメソッドの実装
}
# 知らせ
  1. クラスと抽象クラスの間には継承関係があり、クラスとインターフェースの間には実装関係があります。
  2. クラスと抽象クラスは単一の継承を持ちますが、クラスとインターフェイスは複数の実装を持ちます。
  3. インターフェイスはクラスではなく、クラスの構造を制限します。
  4. インターフェース間には多重継承があります。extends キーワードを使用します。
    インターフェイス I_C は I_A、I_B を拡張します {}

// 静的な遅延バインディング
self::、このクラス (現在のコードが配置されているクラス) を表します。
  クラスがコンパイルされるときに決定されるため、常にこのクラスを表します。
  つまり、サブクラスが親クラスのメソッドを呼び出すとき、self は呼び出し側のサブクラスを表しません。
static::, このクラス (このメソッドを呼び出すクラス) を表します
  継承スコープ内で静的に呼び出されるクラスを参照するために使用されます。
  表現されるクラスは実行時にのみ決定されます。
  static:: は、現在のメソッドが定義されているクラスに解決されなくなりましたが、実際の実行時に計算されます。

// オブジェクトのトラバーサル (反復)
- オブジェクトは属性を通じてデータを保存するため、オブジェクトの属性がトラバースされます。
- 言語構造ごとに、属性名と属性値を取得します。
  foreach ($obj as $p_name => $p_value) {}
# カスタムトラバーサル (イテレータ)
Iterator - 内部的に独自の反復処理を実行できる外部イテレータまたはクラスのインターフェイス
Iterator::current — 現在の要素を返す
Iterator::key — 現在の要素のキーを返す
Iterator::next — 次の要素に進みます
Iterator::rewind — イテレータの最初の要素に戻る
Iterator::valid — 現在の位置が有効かどうかを確認する

#オブジェクトのクローン
//オブジェクト間の値の転送は[参照]転送です。
クローン: 新しいオブジェクト = 古いオブジェクトのクローンを作成します
  - すべての参照プロパティは、引き続き元の変数への参照になります。 
__clone() メソッドは、オブジェクトのクローン作成時に自動的に呼び出されます。
注: 構築方法はインスタンス化(新規)、クローン方法はクローン(クローン)に相当します。

// シングルトンモード
#三プライベート一パブリック
シングルトン パターンは、クラスに固有のオブジェクトを生成するために使用されます。最も一般的に使用される場所はデータベース接続です。シングルトン パターンを使用してオブジェクトを生成した後、そのオブジェクトは他の多くのオブジェクトで使用できます。
# クラスが複数回インスタンス化されないようにする
クラスMySQLDB {
  private static $instance = null // クラスのインスタンスをこのプロパティに格納します。
  // オブジェクトの直接作成を防ぐために、コンストラクターはプライベートとして宣言されます。
  プライベート関数 __construct() {}
  パブリック静的関数 getInstance() {
    if(! self::$instance 静的インスタンス) {
      self::$instance = 新しい静的;
    }
    self::$instance を返します。
  }
  private function __clone() {} // ユーザーがオブジェクト インスタンスをコピーできないようにします
}

// マジックメソッド
__construct コンストラクター
__destruct デストラクター メソッド
__clone クローン オブジェクト
__sleep シリアル化されたオブジェクト
__wakeup はオブジェクトを逆シリアル化します
__autoload は、クラスが使用されているが見つからない場合に自動的にロードします。

__toString オブジェクトは文字列として使用されます
オブジェクトを関数として呼び出そうとする場合は __invoke

# オーバーロードオーバーロード
クラスのプロパティとメソッドを動的に「作成」することを指します。
ユーザーはオブジェクトに追加のプロパティを自由に追加できます。この機能はオーバーロードです。
オーバーロードされたメソッドはすべて public に宣言する必要があります。
オーバーロードされたメソッドは、現在の環境で未定義または非表示のクラス プロパティまたはメソッドが呼び出されるときに呼び出されます。
オーバーロードされたマジック メソッドのパラメータは参照渡しできません。
# 属性のオーバーロード
- アクセスできないプロパティを処理する
プロパティのオーバーロードはオブジェクト内でのみ実行できます。
#Property のオーバーロードは静的プロパティには無効です
静的メソッドでは、これらのマジック メソッドは呼び出されません。したがって、これらのメソッドを静的に宣言することはできません。
アクセスできないプロパティに値を割り当てる場合の __set
  public void __set(string $name,mixed $value)
  機能:プライベート属性の一括管理、オブジェクト構造の間接保護
アクセスできないプロパティの値を読み取る場合の __get
  publicmixed__get(string$name)
アクセスできないプロパティに対して isset() または empty() が呼び出された場合の __isset
  public bool __isset(string $name)
アクセスできないプロパティに対して unset() が呼び出された場合の __unset
  public void __unset(string $name)
# メソッドのオーバーロード
- アクセスできないメソッドを処理する
__call は、アクセスできない非静的メソッド (未定義または非表示など) を呼び出すときに自動的に呼び出されます。
    public mixed __call(string $name, array $arguments)
__callStatic は、アクセスできない静的メソッド (未定義または非表示など) を呼び出すときに自動的に呼び出されます。
    public staticmixed__callStatic(string $name, array $arguments)
# $name パラメータは、呼び出されるメソッドの名前です。 $arguments パラメーターは、メソッドに渡されるパラメーターを含む配列です。

//型制約
関数パラメータはオブジェクトまたは配列としてのみ指定できます
オブジェクトに限定される場合は、仮パラメータの前にクラス名を追加します。配列に限定される場合は、仮パラメータの前に配列を追加します。
型制約では NULL 値が許可されます
型制約はクラス メンバー メソッドで使用されるだけでなく、関数でも使用できます。 

//3つの大きな特徴
カプセル化: 内部を隠すことは吸収であり、インターフェイスのみを開発します。
継承: あるオブジェクトのメンバーは別のオブジェクトによって使用されます。構文はコードの共有に反映されます。
ポリモーフィズム: 複数の形式。// クラスとオブジェクト・キーワード
これはこのオブジェクトを表します
public public (継承チェーン、このクラス、および外部からアクセス可能)
protected protected (継承チェーンのみ、このクラスはアクセス可能)
private private (このクラスのみアクセス可能)
parent:: は親クラスを表します
self:: このクラス (現在のコードが配置されているクラス) を表します。
static:: このクラス (このメソッドを呼び出すクラス) を表します。
static 静的メンバー (プロパティ、メソッド) はすべてのオブジェクトで使用できますが、静的メソッドは非静的メンバーにアクセスすることはできません。
最終メソッドをサブクラスでオーバーロードすることはできず、クラスを継承することはできません (メソッド、クラス)
constクラス定数(プロパティ)
抽象抽象クラス
インターフェースインターフェース
クラス継承を拡張します(サブインターフェース継承インターフェース、その他の通常のクラス継承)
インターフェイスの実装 (クラス実装インターフェイス、抽象クラス実装の言い訳) (インターフェイスの実装と継承は複数存在する可能性があります)
Iterator 組み込みインターフェース (反復)
クローン クローン
インスタンス インスタンス
オブジェクトが特定のクラスに属しているかどうかのインスタンス

/* [クラスとオブジェクト関連の関数] */
class_alias([$original [,$alias]]) はクラスにエイリアスを与えます
class_exists($class [,$autoload]) は、クラスが定義されているかどうかを確認します
interface_exists($interface [,$autoload]) は、インターフェイスが定義されているかどうかを確認します
Method_exists($obj, $method) は、クラスのメソッドが存在するかどうかを確認します。
property_exists($class, $property) は、オブジェクトまたはクラスにプロパティがあるかどうかを確認します。
get_declared_classes(void) は、定義されたクラスの名前で構成される配列を返します。
get_declared_interfaces(void) は、宣言されたすべてのインターフェイスを含む配列を返します。
get_class([$obj]) はオブジェクトのクラス名を返します
get_parent_class([$obj]) は、オブジェクトまたはクラスの親クラス名を返します。
get_class_methods($class) は、クラス メソッド名で構成される配列を返します。
get_object_vars($obj) は、オブジェクトのプロパティで構成される連想配列を返します。
get_class_vars($class) は、クラスのデフォルト属性で構成される配列を返します。
is_a($obj, $class) オブジェクトがこのクラスに属している場合、またはこのクラスがこのオブジェクトの親クラスである場合に TRUE を返します。
is_subclass_of($obj, $class) このオブジェクトがこのクラスのサブクラスの場合は TRUE を返します
get_object_vars($obj) は、オブジェクトのプロパティで構成される連想配列を返します。


//共通クラス
# PHP マニュアル -> 定義済みクラス
Closure クロージャ クラス、無名関数オブジェクトの最終クラス
stdClass 標準クラス。通常、コレクション データを保存するオブジェクト クラスに使用されます。
__PHP_Incomplete_Class は不完全なクラスであり、オブジェクトのみが存在し、クラスが見つからない場合、そのオブジェクトはそのクラスのオブジェクトとみなされます。
例外例外クラス
PDOデータオブジェクトクラス

//魔法の定数
__DIR__ ファイルが配置されているディレクトリ
__LINE__ ファイル内の現在の行番号
__FILE__ ファイルのフルパス(絶対パス)とファイル名

__CLASS__ クラスの名前
__METHOD__ クラス名とメソッド名を含むクラスのメソッド名
__FUNCTION__ 関数名。メソッド名を表すためにのみメソッド内で使用されます。

// 反映機構 反映
機能: 1. 構成情報の取得 2. エージェントの実行
ReflectionClass はクラスに関する情報をレポートします
ReflectionMethod はメソッドに関する情報をレポートします
ReflectionClass::出力クラス構造レポートをエクスポートする
# エージェントの実行
ReflectionFunction クラスのオブジェクトをインスタンス化する
  $f = new ReflectionFunction('func'); // func は関数 func($p);
  $f->invoke('param');


/* ページジャンプ */
// PHP
header('場所: URL')
header()実行後も以下のコードが実行され続けるため、文の後にdieを付けて終了する必要があります。
プロンプトを表示できません。直接ジャンプします
//JSメソッド
location.href = URL
// HTML
<meta http-equiv="Refresh" content="時刻を表す値; url=リダイレクト先の URI">

/* [クッキー] */
Cookie は、ユーザーを追跡および識別するためにリモート ブラウザーにデータを保存するメカニズムです。
Cookie は HTTP ヘッダーの一部であるため、header() 関数の制限と同様に、他の情報がブラウザに出力される前に setcookie() 関数を呼び出す必要があります。出力バッファ関数を使用すると、すべての Cookie またはその他の HTTP ヘッダーが必要に応じて設定されるまで、スクリプトの出力を遅らせることができます。

//追加
setcookie は Cookie 情報を追加します
setcookie($name [,$value [,$expire [,$path [,$domain [,$secure [,$httponly]]]]])
#注意: setcookie() 関数の前に出力はありません。 ob キャッシュがオンになっていない限り!
# パラメータの説明
$name - Cookie の識別名
  $_COOKIE['name'] を使用して name という名前の Cookie を無効にします。
$value - Cookie の値。数値または文字列を指定できます。この値はクライアント側に保存されるため、機密データの保存には使用しないでください。
  $name パラメータの値が 'name' であると仮定すると、$_COOKIE['name'] は $value を取得できます。
$expire - Cookie の有効期間 (Unix タイムスタンプ、秒)
  $expire パラメーターの値が time()+60*60*24*7 の場合、Cookie が 1 週間後に期限切れになるように設定できます。このパラメータが設定されていない場合、セッションの直後に期限切れになります。
$path - サーバー側の Cookie の指定されたパス。この値が設定されている場合、サーバー内の指定されたパスにある Web ページまたはプログラムのみが Cookie にアクセスできます。
  パラメータ値が「/」の場合、Cookie はドメイン全体で有効です。
  「/foo/」に設定すると、Cookie はドメイン内の /foo/ ディレクトリとそのサブディレクトリで有効になります。
  デフォルト値は、Cookie が設定されている現在のディレクトリとそのサブディレクトリです。
$domain - この Cookie が属するサーバーの URL 名を指定します。デフォルトは、この Cookie を作成したサーバーの URL です。
  abc.com などのドメイン名のすべてのサブドメインで Cookie を有効にする場合は、エントリを「.abc.com」に設定する必要があります。$secure - Cookie が安全な HTTPS 接続を通じてのみ送信されるかどうかを示す Cookie のセキュリティ識別定数。この値が設定されている場合、特定の状況下でのみクライアントとサーバー間で送信できることを意味します。
  true に設定すると、Cookie は安全な接続でのみ設定されます。デフォルト値は false です。

// 読む
- ブラウザがリクエストを行うと、現在のドメイン名にあるすべての Cookie 情報がサーバーに送信されます。
- クライアントから送信された Cookie は、$_COOKIE グローバル配列に自動的に保存されます。
- Cookie 変数に複数の値を設定する場合は、Cookie 名の後に [] 記号を追加する必要があります。つまり、複数のデータが配列の形式で同じ変数に保存されます。
  //$_COOKIE['user']['name'] に設定します。user[name] の名前には引用符が含まれていないことに注意してください。
  setcookie('ユーザー[名前]', 'ショッカー');
- $_COOKIE はインデックス配列にすることもできます

// 消去
方法 1: 値を空の文字列に設定する
  setcookie('ユーザー[名前]', '');
方法 2: 対象の Cookie を「期限切れ」ステータスに設定します。
  // Cookie の有効期間を期限切れに設定します。有効期間はブラウザの有効期間と同じで、ブラウザを閉じると削除されます。
  setcookie('usr[name]', '', time()-1);

# 知らせ:
1. Cookie は文字列データのみを保存できます
2. $_COOKIE は Cookie データを受信するためにのみ使用され、Cookie データの設定や管理には使用されません。
  $_COOKIE を操作しても Cookie データには影響しません。
  $_COOKIE は、リクエスト中にブラウザによって運ばれる Cookie データのみを保存します。
3. Cookie のライフサイクル:
  一時クッキー: ブラウザを閉じると削除されます
  永続的な Cookie: $expire パラメータは、有効期限を示すタイムスタンプです。
4. 有効なディレクトリ
  Cookie は指定されたディレクトリ内でのみ有効です。デフォルトは、現在のディレクトリとそのサブディレクトリです。
  サブディレクトリの Cookie は、その親ディレクトリまたは兄弟ディレクトリでは使用できません。
5. Cookie はドメイン名を識別します
  デフォルトでは、現在のドメイン名とそのサブドメイン名が有効です。
6. js の document.cookie を通じて取得され、型は文字列です
7. ブラウザには COOKIE の総数に制限はありませんが、ドメイン名ごとの COOKIE の数と各 COOKIE のサイズには制限があり、ブラウザごとに異なる制限があります。

/* 【セッション】 */
1. セッションメカニズムを開きます
  session_start()
  注: session_start() 関数の前に出力があってはなりません。 ob キャッシュがオンになっていない限り。
2. 稼働データ
  $_SESSION 配列を操作する
3. ブラウザは SessionID を保存します。このセッション ID は、デフォルトで現在のドメイン名のすべてのディレクトリおよびサブディレクトリに有効になります。つまり、Cookie のデフォルトのパス値は「/」に設定されます。
4. サーバーはセッションデータを保存します
  デフォルトの保存方法: 各セッションでセッション データ ファイルが生成されます。ファイル名は sess_plus SessionID です。
5. セッションは、リソースを除くあらゆる種類のデータを保存できます。
  データはシリアル化されてからファイルに保存されます。
6. $_SESSION の要素の添字は整数であってはなりません。
  要素の値のみがシリアル化されるためです。
  要素内の配列添字にはこの要件はありません。
7. ライフサイクル
  ブラウザはデフォルトで閉じられています
    ブラウザによって保存されたCookie変数SessionIDは一時的なものであるため、
    ただし、サーバー側のセッション データ ファイルは必ずしも消えるわけではありません (セッションのガベージ コレクション メカニズムが処理するまで待つ必要があります)。
  Cookie 内の PHPSESSID 変数のライフサイクルは延長できます。 (推奨されません)
  php.ini 設定 session.gc_maxlifetime
8. データの削除
  $_SESSION 変数は、スクリプトが終了すると消えます。セッションメカニズムがオンになると、$_SESSION 変数が作成されます。
  $_SESSION とセッションデータを保存するファイルは 2 つのスペースです。
  unset($_SESSION['key']) は配列内の要素を削除するだけであり、セッション データを保存するファイルにはすぐに応答しません。
    スクリプトが終了するまで待ってから、$_SESSION データがファイルに書き込まれます。
  session_destroy() は、セッション データを保存するファイルを破棄し、ファイルに内容を書き込みません。
    $_SESSION 変数は削除されず、設定が解除されるかスクリプトが終了するまで削除されません。
  セッションを完全に削除するにはどうすればよいですか? 3 つの部分を削除する必要があります
    unset($_SESSION);
      $_SESSION 変数を削除した後、データ ファイルは変更されていません。 unset を単独で使用する場合は、最初に $_SESSION = array() を空にする必要があります
    session_destroy();
    setcookie('PHPSESSID', '', time()-1); //保険契約はライフサイクルを無効にします。
  スクリプト サイクル全体で、データ ファイルの読み取りと書き込みは 1 回だけ行われます。

// セッションストレージメカニズムを書き換えます
#セッションの保存方法
session.save_handler = ユーザー|ファイル|memcache
# データファイルが多すぎることによって引き起こされる問題は、データファイルを分子ディレクトリに保存することで解決できます。
PHP 設定ファイルの session.save_path オプションを使用し、データ ストレージ ディレクトリを手動で作成する必要があります。
この構成オプションの前にレベルを追加します。サブディレクトリを分散する原則では、セッション ID の対応する文字を使用してサブディレクトリを割り当てます。サブディレクトリは依然として手動で作成する必要があります。
session.save_path = "2; F:/PHPJob/Temp"
#マルチサーバーのデータ共有の問題
#データストレージ操作:
  $open の初期化、リソースの解放 $close、読み取り $read、書き込み $write、ストレージ メディアの破棄 $destroy (この操作は session_destroy が呼び出されたときにトリガーされます)、ガベージ コレクション $gc
# セッション ID の長さは可変です。設定方法が異なると、セッション ID の長さも異なります。
session.hash_function を使用すると、ユーザーはセッション ID の生成に使用されるハッシュ アルゴリズムを指定できます。
  「0」は MD5 (128 ビット) を意味し、「1」は SHA-1 (160 ビット) を意味します。
session.hash_bits_per_character を使用すると、バイナリ ハッシュ データを読み取り可能な形式に変換するときに、1 文字あたり何ビットを保存するかをユーザーが定義できます。
  可能な値は、「4」 (0 ~ 9、a ~ f)、「5」 (0 ~ 9、a ~ v)、および「6」 (0 ~ 9、a ~ z、A ~ Z、「-」、「,」) です。ハッシュの合計長は 128 ビットで、セッション ID の長さは 128 / 可能な値、4 - > 32、5 - > 26、6 - > 22 です。
# カスタムデータの保存操作方法
# 注: PHP がどのようにシリアル化、逆シリアル化し、データを取得し、データを書き込むかについては気にせず、データ ストレージに関連する操作のみを行ってください。
session_set_save_handler はユーザー定義のセッション データ ストレージ関数を設定します
  bool session_set_save_handler(呼び出し可能な $open、呼び出し可能な $close、呼び出し可能な $read、呼び出し可能な $write、呼び出し可能な $destroy、呼び出し可能な $gc)
実行順序: オープン、クローズ、読み取り、書き込み、破棄、GC
# 最初にプロセッサを設定してからセッションを開きます

# よく使われる関数
session_start はセッションメカニズムを開始または再開します。
session_id は現在のセッション ID を取得または設定します
session_destroy は、現在のセッションのすべてのデータを破棄します (データ ファイルを破棄します)。
session_name は、現在のセッション名 (Cookie 変数名、デフォルトは PHPSESSID) を取得または設定します。
session_save_path は、現在のセッション データ ファイルの保存パスを取得または設定します
session_set_save_handler はユーザー定義のセッション データ ストレージ関数を設定します
session_unset はすべてのセッション変数を解放します ($_SESSION 配列要素をクリアします)。
session_encode は、現在のセッション データを文字列にエンコードします。
session_decode は文字列をセッション データに解釈します
session_write_close はセッション データを書き込み、セッションを閉じます
session_register_shutdown はセッションを閉じます
session_set_cookie_params はセッション Cookie 変数を設定し、session_start() の前に使用する必要があります。
  session_set_cookie_params(0,"/webapp/"); //セッションの生存時間を設定します。
session_get_cookie_params はセッション Cookie 変数を取得します。現在のセッションの Cookie 情報を含む配列を返します。

# php.iniの設定
ini_set($varname, $newvalue);
  //この関数の設定は現在のスクリプトに対してのみ有効です
  //すべての php.ini 設定がこの関数で設定できるわけではありません
ini_get($varname) //特定の構成項目に関する情報を取得します
ini_get_all([str $extension]) //すべての構成項目情報の配列を返します

# セッション拡張構成
session.name は、Cookie の名前として使用するセッション名を指定します。英数字のみで構成でき、デフォルトは PHPSESSID です。
session.save_path は、ストレージ ハンドラーに渡されるパラメーターを定義します。
  デフォルトのファイル ファイル プロセッサが選択されている場合、この値は作成されたファイルへのパスになります。デフォルトは /tmp です。
  オプションの N パラメータは、セッション ファイルが配布されるディレクトリの深さを決定します。
  N パラメータを使用するには、使用前にこれらのディレクトリを作成する必要があります。 ext/session ディレクトリには、これを行うために使用できる mod_files.sh という小さなシェル スクリプトがあります。
  N パラメーターが使用され、N が 0 より大きい場合、自動ガベージ コレクションは実行されません。
session.save_handler は、セッションに関連付けられたデータの保存と取得に使用されるハンドラーの名前を定義します。デフォルトはファイルです。
  ユーザーがメモリを定義した場合、値は user に変更されます。
  ini_set('session.save_handler', 'user');//この設定は現在のスクリプトに対してのみ有効です。
session.auto_start は、リクエストの開始時にセッション モジュールが自動的にセッションを開始するかどうかを指定します。デフォルトは 0 (開始しない) です。
session.gc_probability と session.gc_divisor は一緒に、各セッションの初期化時に gc (ガベージ コレクション ガベージ コレクション) プロセスを開始する確率を定義します。この確率は、gc_probability/gc_divisor を使用して計算されます。たとえば、1/100 は、各リクエストで gc プロセスが開始される確率が 1% であることを意味します。 session.gc_divisor のデフォルトは 100 です。 session.gc_probability のデフォルトは 1 です。/* [画像の生成と処理] */GD ライブラリ
// キャンバスの生成
# 新しいキャンバスを作成する
imagecreate は新しいパレットベースのイメージを作成します
  リソースイメージ作成(int $x_size, int $y_size)
imagecreatetruecolor は新しい True Color イメージを作成します
# 既存のファイルまたは URL に基づいてキャンバスを作成します
imagecreatefromgd2 GD2 ファイルまたは URL からイメージを作成します
imagecreatefromgd2part 指定された GD2 ファイルまたは URL の一部から画像を作成します
imagecreatefromgd は GD ファイルまたは URL から新しいイメージを作成します
imagecreatefromgif はファイルまたは URL から新しい画像を作成します
imagecreatefromjpeg はファイルまたは URL から新しい画像を作成します
imagecreatefrompng ファイルまたは URL から新しい画像を作成します
imagecreatefromstring は、文字列内の画像ストリームから画像を作成します
imagecreatefromwbmp ファイルまたは URL から新しい画像を作成します
imagecreatefromxbm はファイルまたは URL から新しい画像を作成します
imagecreatefromxpm はファイルまたは URL から新しい画像を作成します
// 色の割り当て
imagecolorallocate は画像に色を割り当てます
  int imagecolorallocate(resource $image, int $red, int $green, int $blue)
imagecolorallocatealpha は画像にカラー + アルファを割り当てます
imagecolordeallocate は、画像の色の割り当てをキャンセルします。
imagecolortransparent は色を透明として定義します
imagecolorat はピクセルのカラーインデックス値を取得します
imagecolorclosest 指定した色に最も近い色のインデックス値を取得します
imagecolorclosestalpha 指定した色に最も近い色と透明度を取得します
imagecolorclosesthwb 指定された色に最も近い白黒の色のインデックスを取得します
imagecolorexact は、指定された色のインデックス値を取得します
imagecolorexactalpha 指定された色と透明度のインデックス値を取得します
imagecolormatch は、画像内の色のパレット バージョンをトゥルー カラー バージョンにより近づけます。
imagecolorresolve 指定された色のインデックス値、または最も近い可能な置換値を取得します。
imagecolorresolvealpha 指定された色のインデックス値 + アルファ、または可能な限り最も近い代替値を取得します。
imagecolorset は、指定されたパレット インデックスの色を設定します。
imagecolorsforindex はインデックスの色を取得します
imagecolorstotal 画像のパレット内の色の数を取得します
// 領域の塗りつぶし
画像の塗りつぶし領域の塗りつぶし
  bool imagefill(resource $image, int $x, int $y, int $color)
imagefilledarc は楕円弧を描き、それを塗りつぶします
imagefilledellipse は楕円を描いて塗りつぶします
imagefilledpolygon は多角形を描画して塗りつぶします
imagefilledrectangle は長方形を描画して塗りつぶします
imagefilltoborder は、指定された色の境界線まで領域を塗りつぶします。
imagesettile は塗りつぶしに使用されるテクスチャを設定します
// グラフィック作成
imagearc は楕円弧を描きます
imagechar は文字を水平方向に描画します
imagecharup は文字を縦方向に描画します
imagedashedline 点線を引く
imageellipseは楕円を描きます
imageline は線分を描画します
imagepolygon は多角形を描画します
imagerectangle は長方形を描画します
imagesetpixel は単一のピクセルを描画します
imagex は画像の幅を取得します
imagey は画像の高さを取得します
//ブラシ設定
imagesetbrush は、線の描画に使用されるブラシ画像を設定します。
imagesetstyle は線画のスタイルを設定します
imageethickness は線画の幅を設定します
// グラフィックのコピー
imagecopy はイメージの一部をコピーします
imagecopymerge は画像の一部をコピーして結合します
imagecopymergegray 画像の一部をグレースケールでコピーして結合します
imagecopyresampled リサンプルは画像の一部をコピーし、サイズを変更します
imagecopyresize は画像の一部をコピーし、サイズを変更します
//キャラクター作成
imagestring は文字列の線を水平方向に描画します
imagestringup は文字列を垂直方向に描画します
imagepsslantfont フォントを傾けます
imagefontheight はフォントの高さを取得します
imagefontwidth はフォント幅を取得します
imagettfbbox TrueType フォントを使用してテキストの範囲を取得します
imageloadfont は新しいフォントをロードします
imagepsencodefont はフォント内の文字エンコード ベクトルを変更します
imagepsextendfont はフォントを拡大または縮小します
// キャンバスを画像としてエクスポート
imagegif 画像を GIF 形式でブラウザまたはファイルに出力します
imagepng 画像を PNG 形式でブラウザまたはファイルに出力します
imagejpeg 画像を JPEG 形式でブラウザまたはファイルに出力します
imagewbmp 画像を WBMP 形式でブラウザまたはファイルに出力します
header() を通じて「Content-type: image/image format」を送信すると、PHP スクリプトが画像を直接出力する可能性があります。header("コンテンツタイプ: image/gif");
imagegd GD イメージをブラウザまたはファイルに出力します
imagegd2 GD2 イメージをブラウザまたはファイルに出力します
// キャンバスリソースを解放する
画像を破壊する 画像を破壊する
//画像情報
image_type_to_extension は、画像タイプのファイル接尾辞を取得します
getimagesize は画像サイズを取得します
imagex は画像の幅を取得します
imagesy は画像の高さを取得します
imageistruecolor は、画像が True Color 画像であるかどうかを確認します。
imagetypes は、現在の PHP バージョンでサポートされているイメージ タイプを返します。
//画像設定
imagerotate は指定された角度で画像を回転します
imagealphablending は、画像のカラー ブレンド モードを設定します。
imageantialias アンチエイリアス(アンチエイリアス)機能を使用するかどうか
imagefilter は画像にフィルターを適用します
imagegammacorrect は GD 画像にガンマ補正を適用します
imageinterlace インターレースを有効または無効にする

/* [サムネイル] [ウォーターマーク] */
imagecopyresampled リサンプルは画像の一部をコピーし、サイズを変更します
  bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
imagecopymerge は画像の一部をコピーして結合します
  bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
getimagesize は画像サイズを取得します
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles