Soumettre la recherche
Mettre en ligne
PHP:スーパーグローバル変数1
•
Télécharger en tant que PPTX, PDF
•
0 j'aime
•
141 vues
iPride Co., Ltd.
Suivre
2021/02/26の勉強会で発表されたものです。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 15
Télécharger maintenant
Recommandé
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
iPride Co., Ltd.
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
iPride Co., Ltd.
Recommandé
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
AWS_Bedrock入門 このスライドは2024/03/08の勉強会で発表されたものです。
iPride Co., Ltd.
AWS Lambdaと AWS API Gatewayを使ったREST API作り
AWS Lambdaと AWS API Gatewayを使ったREST API作り
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
iPride Co., Ltd.
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
iPride Co., Ltd.
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
iPride Co., Ltd.
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
iPride Co., Ltd.
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
iPride Co., Ltd.
OpenID Connectについて
OpenID Connectについて
iPride Co., Ltd.
画像生成AIの問題点
画像生成AIの問題点
iPride Co., Ltd.
AI入門
AI入門
iPride Co., Ltd.
MVCになぞらえて理解するReact
MVCになぞらえて理解するReact
iPride Co., Ltd.
AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~
iPride Co., Ltd.
OAuth2.0について
OAuth2.0について
iPride Co., Ltd.
ゼロトラストについて学んだこと
ゼロトラストについて学んだこと
iPride Co., Ltd.
Recoilライブラリを 触ってみる
Recoilライブラリを 触ってみる
iPride Co., Ltd.
ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話
iPride Co., Ltd.
AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~
iPride Co., Ltd.
単一責任の原則について
単一責任の原則について
iPride Co., Ltd.
Contenu connexe
Plus de iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
iPride Co., Ltd.
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
iPride Co., Ltd.
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
iPride Co., Ltd.
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
iPride Co., Ltd.
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
iPride Co., Ltd.
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
iPride Co., Ltd.
OpenID Connectについて
OpenID Connectについて
iPride Co., Ltd.
画像生成AIの問題点
画像生成AIの問題点
iPride Co., Ltd.
AI入門
AI入門
iPride Co., Ltd.
MVCになぞらえて理解するReact
MVCになぞらえて理解するReact
iPride Co., Ltd.
AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~
iPride Co., Ltd.
OAuth2.0について
OAuth2.0について
iPride Co., Ltd.
ゼロトラストについて学んだこと
ゼロトラストについて学んだこと
iPride Co., Ltd.
Recoilライブラリを 触ってみる
Recoilライブラリを 触ってみる
iPride Co., Ltd.
ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話
iPride Co., Ltd.
AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~
iPride Co., Ltd.
単一責任の原則について
単一責任の原則について
iPride Co., Ltd.
Plus de iPride Co., Ltd.
(20)
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる その3 2024/03/01の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる おさらい 2024/02/16の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
可用性・セキュリティを考慮して AWSでDrupalを構築する 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS CDKを使おうとしたら普通に悪戦苦闘した話 2024/02/02の勉強会で発表されたものです。
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS (Amazon Web Services) を勉強してみる 2024/01/26の勉強会で発表されたものです
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
AWS SAM入門 2024/01/26の勉強会で発表されたものです【アイ・プライド】
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
Drupalでフォームの代わりにSPA (React) を表示させる話 2023/12/15の勉強会で発表されたものです。
ChatGPTを用いてCDKを勉強
ChatGPTを用いてCDKを勉強
OpenID Connectについて
OpenID Connectについて
画像生成AIの問題点
画像生成AIの問題点
AI入門
AI入門
MVCになぞらえて理解するReact
MVCになぞらえて理解するReact
AIについて学んだこと ~ 生成AIとは? ~
AIについて学んだこと ~ 生成AIとは? ~
OAuth2.0について
OAuth2.0について
ゼロトラストについて学んだこと
ゼロトラストについて学んだこと
Recoilライブラリを 触ってみる
Recoilライブラリを 触ってみる
ReactでuseEffect()を減らしたい話
ReactでuseEffect()を減らしたい話
AIについて学んだこと ~ AIとは? ~
AIについて学んだこと ~ AIとは? ~
単一責任の原則について
単一責任の原則について
PHP:スーパーグローバル変数1
1.
PHP スーパーグローバル変数 ① 2021/02/26 TaKo
2.
表1. 3種類のスコープについて概要 概要 ローカルスコープ 宣言された関数内でのみ使用可能 グローバルスコープ 宣言されたスクリプト内で使用可能 関数内で使用するには`global`キーワードが必要 スーパーグローバル PHPによって自動で定義される特別な変数 どこでも使用可能 関数内で使用する際に`global`キーワードが不要 変数のスコープ
3.
スーパグローバル変数の種 類 表2. 9種のスーパーグローバル変数について概要 変数名 概要 $GLOBALS
現在グローバルスコープに定義されているすべての変数への参照 $_GET URLパラメータでスクリプトに渡された変数とその値を格納 $_POST HTTP POSTメソッドからスクリプトに渡された変数とその値が格納 $_COOKIE スクリプトに渡されたcookieの情報が格納 $_REQUEST $_GET, $_POST ,$_COOKIEの内容をまとめた連想配列 *デフォルトでは$_COOKIEは非表示 $_SERVER WEBサーバが生成するヘッダ情報やスクリプトへのパスなどの情報 $_SESSION セッションに紐づいたデータなどを格納 $_FILES POSTメソッドでアップロードされたファイルの情報を格納 $_ENV 環境変数をまとめた連想配列
4.
$GLOBALS 現在グローバルスコープに定義されているすべての変数への参照 <?php $GGG_TEST_GGG = 'global
scope'; function test_method() { $LLL_TEST_LLL = 'local scope'; } echo "<pre>"; var_dump($GLOBALS); echo "</pre>"; グローバル変数 ローカル変数 $GLOBALSの中身を出力 array(9) { ["_GET"]=> array(0) { } ...略... ["GGG_TEST_GGG"]=> string(12) "global scope" ...略... Output スーパーグローバル変数が ずらずら表示されて... 自分で定義したグローバル変数とその値が格納され ている ローカル変数は表示されない
5.
$_GET URLパラメータ(GET通信)でスクリプトに渡された変数とその値が格納 <?php echo '<pre>'; var_dump($_GET); echo '</pre>'; $_GETの中身を出力 array(2)
{ ["get_value"]=> string(2) "10" ["id"]=> string(4) "test" } Output URLで渡された値が 格納されている 全部string型で格納 http://URL?get_value=10&id=test GET_test.php
6.
$_POST HTTP POSTメソッドからスクリプトに渡された変数とその値が格納 <?php echo '<pre>'; var_dump($_POST); echo
'</pre>'; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Test</title> </head> <body> <form method="POST" action=""> <p>氏名:<input type="text" name="name" value=""></p> <p><input type="submit" name="submit" value="送信"></p> </form> </body> </html> $_POSTの中身を出力 Output dddと入力して送信 した結果
7.
$_COOKIE HTTP cookie からスクリプトに渡されたcookieの情報が格納 <?php session_start(); echo
'<pre>'; var_dump($_COOKIE); echo '</pre>'; $_COOKIEの中身を出力 array(1) { ["<session_name>"]=> string(50) "< session-id >" } Output
8.
$_REQUEST $_GET, $_POST ,$_COOKIEの内容をまとめた連想配列 *デフォルトでは$_COOKIEは非表示 <?php session_name("REQUEST_TEST_SESSION_ID"); session_start(); echo
'<pre>'; var_dump($_REQUEST); echo '</pre>'; ?> ...省略... $_REQUESTの中身を出力 Output `ddd`と入力して送信した結果 http://host.name/path/to/REQUEST_test.php ?get_value=10&id=tset
9.
$_REQUEST $_REQUESTに$_COOKIEを含める設定 request_order = "GP" ↓の内容に書き換える request_order
= "GPC" request_order • $_REQUESTにどのスーパーグローバル変数を含めるか の設定 • 設定が空白の場合、variables_orderの設定値に従う • わざわざ設定する場面は少ない?? G:$_GET P:$_POST C:$_COOKIE /etc/php.ini *variables_orderについては次回
10.
まとめ • スーパーグローバル変数は、PHPが自動で用意する特別な変数 • スクリプト内のどこでも使用可能で、関数内でも`global`キーワードが不要 表3.
今回紹介したスーパーグローバル変数5種 変数名 概要 $GLOBALS 現在グローバルスコープに定義されているすべての変数への参照 $_GET URLパラメータ(GET通信)でスクリプトに渡された変数とその値が格納 $_POST HTTP POSTメソッドからスクリプトに渡された変数とその値が格納 $_COOKIE スクリプトに渡されたcookieの情報が格納 $_REQUEST $_GET, $_POST ,$_COOKIEの内容をまとめた連想配列 *デフォルトでは$_COOKIEは非表示
11.
おまけ 依存関係にある各種ツールなどのソースに散見 Drupal core内でも様々なファイル(半分くらいTEST関連?)で使用されている 使いこなせたら、開発者(PHPer)としての幅が広がりそう? Drupalソース内の$GLOBALS grep -r
"$GLOBALS" path/to/DRUPAL_ROOT/ 以下のコマンドでざっくりと調査 *DRUPAL_ROOTまでのパスは省略 *コマンドの実行結果を一部抜粋 /core/authorize.php: 'base_url' => $GLOBALS['base_url'], /core/includes/common.inc: return $GLOBALS['base_path']; /core/includes/install.inc: _drupal_rewrite_settings_global($GLOBALS[$setting], $data); /core/lib/Drupal/Core/Config/ConfigFactory.php: $config->setSettingsOverride($GLOBALS['config'][$name]); /core/lib/Drupal/Core/Test/FunctionalTestSetupTrait.php: unset($GLOBALS['config']);
12.
おまけ 依存関係にある各種ツールなどのソースに少量の記述。ほぼコメント内 Drupal core内ではおおよそTEST関連?のソースで少量記述。ほぼコメント内 Drupalではほぼ使われてない? Drupalソース内の$_GET grep -r
"$_GET" path/to/DRUPAL_ROOT/ 以下のコマンドでざっくりと調査 *DRUPAL_ROOTまでのパスは省略 *コマンドの実行結果を一部抜粋 /vendor/guzzlehttp/psr7/src/ServerRequest.php: ->withQueryParams($_GET) /core/modules/system/tests/src/Functional/Routing/DestinationTest.php: // Test $_GET['destination']. /core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php: $_GET = $request->query->all();
13.
おまけ $_GETよりさらに記述が少なく、Symfonyなどの依存関係のあるツールと TEST関連?のソースのみ、他はほぼコメント Drupalでは$_GET, $_POSTはほとんど使われてなさそう? Drupalソース内の$_POST grep -r
"$_POST" path/to/DRUPAL_ROOT/ 以下のコマンドでざっくりと調査 *DRUPAL_ROOTまでのパスは省略 *コマンドの実行結果を一部抜粋 /vendor/symfony/http-foundation/Request.php: $_POST = $this->request->all(); /core/tests/Drupal/Tests/Core/Form/FormBuilderTest.php: $_POST['foo'] = 'bar'; /core/tests/Drupal/Tests/Core/Security/RequestSanitizerTest.php: $_POST = $request->request->all();
14.
おまけ $_POSTと同じくらい記述が少なく、Symfonyなどの依存関係のあるツールと TEST関連?のソースのみ、他はほぼコメント SymfonyでGET,POST,COOKIEが独自の変数に格納されてる...。 Drupalソース内の$_COOKIE grep -r "$_COOKIE"
path/to/DRUPAL_ROOT/ 以下のコマンドでざっくりと調査 *DRUPAL_ROOTまでのパスは省略 *コマンドの実行結果を一部抜粋 ./drupal/vendor/symfony/http-foundation/Request.php: * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. ./drupal/vendor/symfony/http-foundation/Request.php: $_COOKIE = $this->cookies->all(); ./drupal/vendor/symfony/http-foundation/Request.php: $request = ['g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE];
15.
おまけ $_POSTよりさらに記述が少ない おおよそSymfonyとTEST関連?のソースのみ、他はほぼコメント $_REQUESTは、前のスライドのように独自の変数に置き換えるのが一般的? Drupalソース内の$_REQUEST grep -r "$_REQUEST"
path/to/DRUPAL_ROOT/ 以下のコマンドでざっくりと調査 *DRUPAL_ROOTまでのパスは省略 *コマンドの実行結果を一部抜粋 /vendor/symfony/http-foundation/Request.php: $_REQUEST = [[]]; /vendor/symfony/http-foundation/Request.php: $_REQUEST[] = $request[$order]; /vendor/symfony/http-foundation/Request.php: $_REQUEST = array_merge(...$_REQUEST);
Télécharger maintenant