@ PHP

PHPの基本ルール

PHP ブロック

PHP は、開始タグ「<?php」と終了タグ「?>」の中に記述します。この開始タグと終了タグで囲まれた部分を「PHP ブロック」と呼び、PHP ブロック内に記述された内容が PHP プログラムとして実行されます。

PHP は実行するためのプログラムが与えられると、 <?php と ?> (スクリプティングデリミタ または PHP タグ)に囲まれた部分にだけに注意を払います。

スクリプティングデリミタは、HTML と PHP の境を表す区切り文字で、<?php と ?> の間にステートメント(命令文)を記述します。

<?php と ?> の外側は何であろうとそのまま出力されます。これにより、ほとんどが HTML からなるファイルに PHP の小さなスクリプトブロックを埋め込むことができます。

PHP ファイルは、通常 .php という拡張子のファイル名にします。

hello.php は PHP ステートメントが1つだけ含まれる PHP ソースコードです。

hello.php

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>PHP says hello</title>
</head>

<body>
<b>
<?php
print 'Hello, world!';
?>
</b>
</body>

</html>

PHP 記述上のポイントは以下のようになります。

  1. ファイルの拡張子は.phpにする
  2. <?php と ?> の間にステートメント(命令文)を記述する
  3. ステートメントの最後に「;(セミコロン)」を記述する

<?php と ?> で囲みさえすれば、PHP は HTML 内のどこに記述してもかまいません。 次のように、HTML タグの中にも記述できます。

in_the_tag.php

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<title>In the Tag</title>
</head>

<body>
  <a href="<?php print 'http://www.google.com'; ?>">http://www.google.com</a>
</body>

</html>

終了タグの省略

「PHP ブロックで終了するファイル」では PHP ブロックの終了タグを省略できます。

rules_02.php

<?php
print '終了タグは省略できます。';

「PHP のみで記述されたファイル」、ライブラリや、HTML を含まないファイルなどは、多くの場合終了タグを記述しないことを推奨しています。これは、「PHP のブロック以外は文字列として出力される」という PHP の仕様によるものです。

たとえば、クラスが定義され、そのファイルを読み込んで使われることが想定されたファイルの末尾が「testclass.php」のように複数の改行を含んでいる場合、この PHP を読み込んだとき、PHP ブロックの外側にある改行が意図せず出力されてしまいます。

testclass.php

<?php
class TestClass
{
    public $data = "abc";
    public function getData() {
        return $this->data;
    }  
}
?>

rules_03.php

<?php
require('testclass.php');
$obj = new TestClass();
print "メソッド呼び出し:".$obj->getData();
?>

ホワイトスペースと大文字小文字の区別

PHPでは、文と文の間にホワイトスペースがなくても、たくさんのホワイトスペースがあっても、プログラム実行には影響を与えません。(ホワイトスペースとはプログラム用語で、スペース、タブ、改行のような空白に見える文字のことです)。

実用的には、1行1文が良いスタイルですが、ソースコードの可読性を高めるために文と文の間にブランクを入れることもあります。rules_04.php は悪いホワイトスペースの使い方です。rules_05.php のように書きかえましょう。

rules_04.php

<?php

print 'Hello';


print ' World!';

?>

rules_05.php

<?php
print 'Hello,';
print 'World!';
?>

さらにPHPは行と行の間のホワイトペースを無視するのに加えて、言語のキーワードと値の間のホワイトスペースも無視します。

rules04.php では、3行のコードが記述されていますが、1行目はスペースを入れすぎ、2行目はつめすぎ、そして3行目が良い例となっています。

rules_06.php

<?php
print          'To many space.'."<br>\n";
print'To few space.'."<br>\n";
print 'Just the right amount space.';
?>

言語キーワード(print のような)と関数名(number_format のような)は大文字小文字を区別する必要はありません。

あるいは両方がまじりあっていても、PHP は処理をすることができます。

rules05.php はいずれも PHP から見れば同じです。

rules_07.php

<?php
print number_format(285266237)."<br>\n";
PRINT Number_format(285266237)."<br>\n";
Print number_format(285266237)."<br>\n";
pRInt NUMBER_FORMAT(285266237)."<br>\n";
?>

コメント

簡潔な言葉でプログラムがどのように動作するかを説明するコメントによって、プログラムをもっと理解しやすくします。

プログラムにコメントを書くことはとても大切なことです。PHP は //(C++型) ではじまる行をコメントとして扱います。また、コメント行であることをはっきりさせるために、// を同じ行の後ろに置くこともできます。

PHP は シェルスクリプト型の1行コメントもサポートしています。シェルスクリプト型のコメント行は、# から始まります。コメント開始の # は // と同じ場所に使うことができますが、最近のスタイルでは、# よりも // が好まれています。

rules_08.php

<?php
// この行はコメントです
print 'トースト';
print '381円'."<br>\n";

# もう一つ料理をメニューに加えます。
print 'パンケーキ';
print '381円'."<br>\n";

// // または#は行のどこに使っても、コメントが開始します。
print 'ベーコンエッグサンド'; // 私の一番好きな朝食です。
print '381円'."<br>\n"; # カップヨーグルトつきです。

# 文字列にの中に置かれた // または # はコメントの始まりではありません。
print 'http://www.example.com'."<br>\n";
print 'http://www.example.com/menu.php#dinner';
?>

複数行コメントは /* で始めて */ で終わります。PHP では、/* と */ の間はすべてコメントとして扱われます。

複数行コメントは、コードの小さなブロックを一時的に無効にするためにも便利です。

rules_09.php

<?php
/* メニューにいくつか追加する
  - グリルドチーズサンド
  - アボカドクリームパンケーキ
  - ベーコンエッグマフィン
*/
print 'グリルドチーズサンド、アボカドクリームパンケーキ、ベーコンエッグマフィン'."<br>\n";
print '合計金額'.number_format(381+381+381).'円';

/* これは古いメニュー:
以下の行はコメントに含まれるので、実行されない。
print "チーズバーガー、フレンチフライ、オニオンリング";
print "合計金額:".number_format(381+381+381)."円";
*/
?>

識別子

プログラムを書いていると、さまざまな場面で名前をつけることになります。たとえば、変数、関数、クラスなどです。

PHP ではこれらの命名規則は決まっていて、識別子といいます。識別子は英数字、アンダースコアなどの文字や記号を組み合わせた1文字以上の文字列です。

識別子の命名規則

  1. 任意の文字、または数字、アンダースコアで構成される
  2. 始まりの文字は数字ではいけない

「任意の文字」とは、アンダースコア( _ )、英字(a~z、A~Z)、アスキー文字(128~255)を指します。

識別子の命名規則
記号 $のみ
最初の1文字 アンダースコア( _ )、英字(a~z、A~Z)、アスキー文字(128~255)
残りのすべての文字 アンダースコア( _ )、英字(a~z、A~Z)、数字(1~0)、アスキー文字(128~255)
使うことができない識別子名
識別子名 不備
$2hot4u 数字で始まっている
$drink-size 受け入れられない文字:-
$drinkmaster@example.com 受け入れられない文字:@ と .
$drink!lots 受け入れられない文字:!
$drink+dinner 受け入れられない文字:+
関数名・クラス名
関数名 単語の間にアンダースコア( _ )を使用します。
クラス名 キャメルケース (camelCase) 形式や パスカルケース (PascalCase) 形式を使います。

PHP: print – Manual

画面に文章を表示する

画面に文字を表示するには echo ファンクションまたは print ファンクションを使います。
どちらを使っても機能的には同じことができるので、ここでは、print を利用することにします。
print ファンクションを、PHPのマニュアルサイトで確認してみましょう。
PHP: ルール – Manual

printファンクションのパラメータには、表示する文字列(文章)を指定します。全体を「’(シングルクォーテーション)」または「”(ダブルクォーテーション)」で囲むのがポイントです。

  • ダブルクォーテーション ・・・文字列中の変数を展開する
  • シングルクォーテーション・・・文字列中の変数を展開しない

という違いがあります。

print_01.php

<?php print 'こんにちは、PHP'; ?>

echo と print の違い

  • echoは、引数を複数指定できる。省略形があ。
  • printは、戻り値を取得できる。

どちらを使っても機能的には同じです。

print_02.php

<?php
echo "おはよう、PHP<br>\n";
print 'こんにちは、PHP';
?>

echo ファンクションで引数を複数指定

echo_01.php

<?php
echo 'おはよう。','こんにちは。','こんばんは。';
?>

echo ファンクションの省略形

echo_02.php

<?= '今日はいい天気。' ?>

PHP プログラムのいくつかでは <?php の変わりに <? 開始タグを使っています。これは「オープンショートタグ」といわれ、PHP の設定で有効(on)無効(off)に切り替えることができます。

実行を確実にするために、標準の「<?php」開始タグを使う方がよいでしょう。

print ファンクションの戻り値の取得
※戻り値は int(常に1が返る)

print_03.php

<?php
var_dump( print '戻り値て何?');
?>