サーチ…


備考

ここに画像の説明を入力

PHPPHPの再帰頭字語:Hypertext Preprocessor)は広く使われているオープンソースのプログラミング言語です。特にWeb開発に適しています。 PHPについてのユニークなことは、初心者だけでなく経験豊富な開発者にも役立つことです。それは侵入に対する障壁が低いので、使い始めるのが簡単であり、同時に他のプログラミング言語で提供される高度な機能を提供します。

オープンソース

オープンソースのプロジェクトです。気軽に参加してください

言語仕様

PHPには言語仕様があります。

サポートされているバージョン

現在サポートされているバージョンは 5.6,7.0,7.1の3つです。

PHPの各リリースブランチは、最初の安定リリースから2年間完全にサポートされています。この2年間の積極的なサポートの後、各支店は重大なセキュリティ上の問題のためにさらに1年間サポートされます。この期間のリリースは、必要に応じて行われます。レポートの数に応じて、複数のリリースが存在する場合もあれば、存在しない場合もあります。

サポートされていないバージョン

3年間のサポートが完了すると、ブランチの寿命が終了し、サポートが終了します。

終わりの枝のテーブルが利用可能です。

課題トラッカー

バグやその他の問題はhttps://bugs.php.net/で追跡されます

メーリングリスト

PHPの開発と使用に関する議論は、 PHPのメーリングリストで行われています

公式文書

PHP公式ドキュメントの保守や翻訳を手伝ってください。

あなたはedit.php.netでエディタを使うかもしれません。 貢献者のためのガイドをチェックしてください

バージョン

PHP 7.x

バージョンサポートされるまで発売日
7.1 2019-12-01 2016-12-01
7.0 2018-12-03 2015-12-03

PHP 5.x

バージョンサポートされるまで発売日
5.6 2018-12-31 2014-08-28
5.5 2016-07-21 2013-06-20
5.4 2015-09-03 2012-03-01
5.3 2014-08-14 2009年6月30日
5.2 2011-01-06 2006年11月2日
5.1 2006-08-24 2005-11-24
5.0 2005-09-05 2004-07-13

PHP 4.x

バージョンサポートされるまで発売日
4.4 2008年8月7日 2005-07-11
4.3 2005-03-31 2002年12月27日
4.2 2002-09-06 2002-04-22
4.1 2002-03-12 2001年12月10日
4.0 2001年06月23日 2000-05-22

レガシーバージョン

バージョンサポートされるまで発売日
3.0 2000-10-20 1998年6月6日
2.0 1997年11月1日
1.0 1995-06-08

WebサーバーからのHTML出力

PHPを使用してHTMLファイルにコンテンツを追加することができます。 HTMLはWebブラウザで直接処理されますが、PHPスクリプトはWebサーバーによって実行され、HTMLがブラウザに送信されます。

次のHTMLマークアップには、 Hello World!を追加するPHP文が含まれていますHello World!出力に:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p><?php echo "Hello world!"; ?></p>
    </body>
</html>

これをPHPスクリプトとして保存し、Webサーバーで実行すると、次のHTMLがユーザーのブラウザに送信されます。

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p>Hello world!</p>
    </body>
</html>
PHP 5.x 5.4

echoにはショートカット構文もあり、すぐに値を出力できます。 PHP 5.4.0より前のこの短い構文は、 short_open_tag設定が有効な場合にのみ機能します。

たとえば、次のコードを考えてみましょう。

<p><?= "Hello world!" ?></p>

その出力は、次の出力と同じです。

<p><?php echo "Hello world!"; ?></p>

実際のアプリケーションでは、XSS( クロスサイトスクリプティング )攻撃やテキスト破損を防ぐために、PHPがHTMLページに出力するすべてのデータを適切にエスケープする必要があります。

短いタグ( <?= ... ?> )の適切な使用を含むベストプラクティスを説明する文字列PSR-1も参照してください。

Webサーバーからの非HTML出力

場合によっては、Webサーバーで作業するときに、Webサーバーのデフォルトのコンテンツタイプを上書きする必要があります。たとえば、 plain textJSONXMLなどのデータを送信する必要がある場合があります。

header()関数は生のHTTPヘッダーを送信できます。 Content-Typeヘッダーを追加して、送信しているコンテンツをブラウザに通知することができます。

Content-Typetext/plainとして設定する次のコードを考えてみましょう。

header("Content-Type: text/plain");
echo "Hello World";

これにより、次の内容のプレーンテキスト文書が作成されます。

こんにちは世界

JSONコンテンツを制作するには、代わりにapplication/jsonコンテンツタイプを使用しapplication/json

header("Content-Type: application/json");

// Create a PHP data array.
$data = ["response" => "Hello World"];

// json_encode will convert it to a valid JSON string.
echo json_encode($data);

これにより、次の内容のapplication/json型のドキュメントが生成されます。

{"response": "Hello World"}

PHPが出力を生成する前にheader()関数を呼び出さなければならないことに注意してください。そうしないと、Webサーバはすでにレスポンスのヘッダーを送信しています。だから、次のコードを考えてみましょう:

// Error: We cannot send any output before the headers
echo "Hello";

// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";

これにより警告が表示されます:

警告:ヘッダー情報を変更することはできません - すでに送信されたヘッダー(/dir/example.php:2で開始された出力)は、 /dir/example.phpの 3

header()を使用する場合、その出力はサーバーから送信される最初のバイトである必要があります。このため、PHPの開始タグ<?php前に、ファイルの先頭に空白の行や空白を入れないことが重要<?php 。同じ理由から、それがベストプラクティスと考えられている(参照PSR-2を PHPの終了タグを省略する) ?>のみPHPを含むファイルからとPHPコードのブロックからファイルの最後に。

出力バッファリングセクション参照して、ヘッダーを出力した後など、後で出力する変数にコンテンツを「キャッチ」する方法を学びます。

こんにちは世界!

PHPで出力を出力するために最も広く使われている言語構造はechoです:

echo "Hello, World!\n";

あるいは、 print使うこともできprint

print "Hello, World!\n";

両方のステートメントは同じ機能を実行しますが、小さな違いがあります。

  • echovoid戻り値を返しますが、 printは値1 intを返します
  • echoは複数の引数を取ることができます(括弧のみ)。一方、 printは1つの引数をとります
  • echoprint よりわずかに速い

echoprint両方は、言語構造であり、関数ではありません。つまり、彼らは議論の周りにかっこを必要としません。化粧品の機能との整合性のために、かっこを含めることができます。 echoprint広範な使用例は他の場所で利用できます

次の例のように、Cスタイルのprintfおよび関連する関数も使用できます。

printf("%s\n", "Hello, World!");

PHPで出力変数を包括的に紹介するには、変数の値出力するを参照してください。

命令分離

他のほとんどのC言語と同様に、各ステートメントはセミコロンで終了します。また、終了タグは、PHPブロックの最後のコード行を終了するために使用されます。

PHPコードの最後の行がセミコロンで終わる場合、その最後のコード行に続くコードがない場合、終了タグはオプションです。たとえば、 echo "No error";後に終了タグを残すことができecho "No error";次の例では、

<?php echo "No error"; // no closing tag is needed as long as there is no code below

しかし、PHPコードブロックの後に他のコードがある場合、終了タグはもはやオプションではありません:

<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
    <body>
    </body>
</html>

最後のステートメントのセミコロンは、そのコードブロックに終了タグがある場合、PHPコードブロックにセーブすることもできます。

<?php echo "I hope this helps! :D";
echo "No error" ?>      

一般的には、セミコロンを常に使用し、最後のPHPコードブロック以外のすべてのPHPコードブロックに終了タグを使用することをお勧めします。

したがって、コードは基本的に次のようになります。

<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
    echo "Here we use a semicolon!";
    echo "Here as well!";
    echo "Here as well!";
    echo "Here we use a semicolon but leave out the closing tag";

PHP CLI

PHPはCLI(Command Line Interface)を使用して直接コマンドラインから実行することもできます。

CLIは、基本的な入力と出力の点での違いを除いて、WebサーバのPHPと基本的に同じです。

トリガー

PHP CLIはPHPコードを実行する4つの方法を提供します:

  1. 標準入力。引数なしでphpコマンドを実行しますが、PHPコードをパイプに渡します:
    echo '<?php echo "Hello world!";' | php
  2. 引数としてのファイル名PHPソースファイルの名前を最初の引数としてphpコマンドを実行します。
    php hello_world.php
  3. 引数としてのコードphpコマンドで-rオプションを使用し、続いて実行するコードを指定します。引数のすべてがPHPコードと見なされるため、 <?php openタグは必要ありません。
    php -r 'echo "Hello world!";'
  4. インタラクティブシェル。対話シェルを起動するには、 phpコマンドで-aオプションを使用します。次に、PHPコードを入力(または貼り付け)して戻り値を返します。
    $ php -a
    Interactive mode enabled
    php > echo "Hello world!";
    Hello world!

出力

WebサーバーPHPでHTML出力を生成するすべての関数またはコントロールは、stdoutストリーム(ファイル記述子1)で出力を生成するために使用でき、WebサーバーPHPのエラーログで出力を生成するすべてのアクションは、stderrストリーム記述子2)。

Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
シェルコマンドライン
$ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\

STDOUT
Stdout 1
Stdout 3

STDERR
Stderr 4
PHP Notice:  Stderr 2
 in /Example.php on line 3
PHP Fatal error:  Uncaught RuntimeException: Stderr 5
 in /Example.php:6
Stack trace:
#0 {main}
  thrown in /Example.php on line 6

入力

参照: コマンドラインインターフェイス(CLI)

PHP組み込みサーバー

PHP 5.4以降には、組み込みの開発サーバが付属しています。これは、nginxやApacheなどの実動HTTPサーバーをインストールすることなく、アプリケーションを実行するために使用できます。組み込みサーバーは、開発およびテスト目的でのみ使用するように設計されています。

これは、 -Sフラグを使用して開始できます。

php -S <host/ip>:<port>

使用例

  1. 次を含むindex.phpファイルを作成します。
<?php
echo "Hello World from built-in PHP server";
  1. コマンドラインからコマンドphp -S localhost:8080を実行します。 http://含めないでください。これにより、ドキュメントルートとして存在する現在のディレクトリを使用して、ポート8080でリッスンしているWebサーバーが起動します。

  2. ブラウザを開き、 http://localhost:8080移動しhttp://localhost:8080 。 "Hello World"ページが表示されます。

構成

デフォルトのドキュメントルート(現在のディレクトリ)を上書きするには、 -tフラグを使用します。

php -S <host/ip>:<port> -t <directory>

たとえば、プロジェクトにpublic/ディレクトリがある場合は、 php -S localhost:8080 -t public/を使用してそのディレクトリからプロジェクトを提供できます。

ログ

開発サーバーから要求があるたびに、以下のようなログエントリがコマンドラインに書き込まれます。

[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /

PHPタグ

ファイルにはPHPブロックを表すための3種類のタグがあります。 PHPパーサーは、コードを解釈するための開始タグと終了タグ(存在する場合)を探しています。

標準タグ

これらのタグは、PHPコードをファイルに埋め込むための標準的なメソッドです。

<?php
    echo "Hello World";
?>
PHP 5.x 5.4

エコータグ

これらのタグは、すべてのPHPバージョンで使用できます。また、PHP 5.4は常に有効になっています。以前のバージョンでは、エコータグは短いタグと組み合わせてのみ有効にすることができました。

<?= "Hello World" ?>

短いタグ

これらのタグは、オプションshort_open_tagで無効または有効にすることができます。

<?
    echo "Hello World";
?>

短いタグ:

  • 主要なすべてのPHP コーディング標準では許可されていません
  • 公式文書ではお勧めできません
  • ほとんどのディストリビューションではデフォルトで無効になっています
  • インラインXMLの処理命令を妨害する
  • ほとんどのオープンソースプロジェクトによるコード提出では受け入れられません
PHP 5.x 5.6

ASPタグ

asp_tagsオプションを有効にすると、ASPスタイルのタグを使用できます。

<%
    echo "Hello World";
%>

これらは歴史的な特徴であり、決して使用すべきではありません。それらはPHP 7.0で削除されました。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow