PHP 単語


ニコニコ動画でPHPの動画を見に行く

ピーエイチピー

4.0千文字の記事
これはリビジョン 2664182 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

PHP(PHP:Hypertext Preprocessor)とは、動的なウェブページを表現するために動的なHTMLを出力することに特化したプログラミング言語、またはその処理系である。非常に高速に動作するCGIの仲間である。

なお、PHPとはpersonal homepageから来ているらしい。

曖昧さ回避
  1. PHP研究所 - 京都に本社をおく出版社。

概要

PHPは、Webサーバー上で実行するサーバーサイドスクリプティング言語である。動的なページを実現するためにPHPグループがオープンソースシステムとして開発をしていて、誰でも自由に利用することができる。Webアプリケーション開発によく利用され、世界中の約2000万ドメイン以上で使用されているとして知られている。

また、PHPはインタープリタ型のプログラミング言語でPerlと同じようにソースファイルをコンパイルせずに実行することができる。ただし、コンパイルしないので当然ネイティブコード(機械語)をはき出さない。
書き方も特徴的で、プログラムのソースコードがHTML内に埋め込む事ができ、動的でないHTML部分を出力する場合において非常に単純な出力方法となる。

PHPの魅力は、PostgreSQL、MySQL、SQLite、Oracle、MSSQLなどの数十のデータベースに対応しており、幅広く活用できる点であり、高度なWebアプリケーションが作成できることである。
文法についてはC言語およびC言語から派生した言語の文法によく似ていて、C、C++、Javaなどのメジャーなプログラミング言語を習得したプログラマーが違和感なく利用できるような文法を採用している。加えて、ある程度直感的に扱える言語設計になっているので、初心者でも取っ付きやすいと言われている。

だが、簡単で動きやすい反面、冗長なスパゲッティコードにもなりやすく、一定の品質を構築するにはそれなりに高いスキルが求められる、奥の深い言語にもなっている。

PHPフレームワークも種類が非常に多く、今日日本で一番人気があるのはCAKE PHPであるが、世界ではLaravel、CodeIgniterが強い。ほかにfuelPHP、Symfony、ZendFramework、Phalcon、Yiiなどがある。

サーバーサイドスクリプティング

ブラウザがURLからPHPファイルを要求されると、Webサーバー上で要求されたスクリプトを実行し、その結果をHTMLの内容などでブラウザに出力する。この仕組みのことをサーバーサイドスクリプティングと呼び、それらに属するプログラミング言語をサーバーサイドスクリプティング言語と呼ぶ。

あくまでもスクリプトの実行はサーバーで行うため、利用するブラウザを選ばないという特徴がある。

これに対し、JavaScriptやVBscriptなどは、ブラウザでプログラムが実行されるため、サーバーサイドスクリプティングに対してクライアントサイドスクリプティングと呼ぶ。

PHPはHTMLドキュメント内にスクリプトを書く書式が一般的だが、中にはCakePHPやZend Frameworkのそれのように、PHPスクリプトがHTMLドキュメントを書き出す書式もある。

プログラム例

まずは、Hello Worldを出力してみる。PHPスクリプトは<?php ~ ?> の~の部分に記述する。

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<?php
echo "Hello World!";
?>
</body>
</html>

PHPは変数の宣言および型の宣言が不要である。したがって数値をそのまま文字として出力することもできる。
以下は、変数$add1に変数$add2を加算して画面に出力するプログラムである。
この場合、画面には「2564」と表示される。

<html>
<head>
<title>変数の扱い</title>
</head>
<body>
<?php
$add1 = 2525;
$add2 = 39;

$add1 = $add1 + $add2;
echo "結果は".$add1."です";
?>
</body>
</html>

データベースとの連携

PHP5.5以降はMySQLに接続するには従来のMySQLライブラリが非推奨(Ver5.5以降、Ver7では削除済)となっているため、mysqli クラスを使うか、PDO(PHP Data Objects)クラスを使うことが推奨されている。

<?php
try
{
     //MySQLに接続
   $dbh = new PDO("mysql:host=localhost","root","",array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,    PDO::ATTR_EMULATE_PREPARES => false,    PDO::ATTR_DEFAULT_FETCH_MODE => false   ));

} catch (PDOException $e) {
  echo $e->getMessage() or die();
} 
?>

PHPは初心者向け…だよね?

そう思って絶望してみてください。PHPはけっこういろんなことができます。

初級編

  • 問1:2つの変数、$val1と$val2を、if式を使わずに比較して、大きい値を$largerを格納する式を一行で書いてみてね。
  • 問2:改行コードを含む文字列に対し、改行コードに何が含まれているか調べるにはどうしたらよいか答えてね。
  • 問3:変数$objに、配列を使わずに$name,$age,$addressの三種類の値を入れて取り出せるようにしてね。

中級編

  • 問4:小数点2の桁を丸める定義関数、roundmath()を作ってね。ただし、正数、負数どちらにも対応できるようにね。
  • 問5:任意の行数$columnだけあるSQLのInsert文に対して、一行でプレースホルダを使った式を作成してみてね。なお、プレースホルダの記号は何を使ってもOKです。
  • 問6:$desc_number = function(){ echo $number--;}; この無名関数に少しだけ手を加えて、関数desc_number()を実行するたびに、数を減らしていくようにしてね。なお、$numberには最初に100だけ代入されています。

上級編

  • 問7:文字連結演算子( . )を使わずに、文字列の中に定数今日の日付を埋め込んでみてね。
  • 問8:同じページ内で定義関数function hogehoge($val1)とfunction hogehoge($val2)を呼び出せるよようにしてみてね。ただし、クラスのメンバに入れるのは禁止です。
  • 問9:異なる要素数の2つの配列$ary1と$ary2を同時にループして、順番に値を取り出したい。foreachを使って取り出してみてね。ただし、NULLを出さないでね。
  • 問10:一つのメソッドを使うだけで、全10学級、国数英社理のテスト結果に対して、各生徒の偏差値と学年順位、学級順位を返すシステムを作ってね(横暴)。

各問題のヒント

  • 問1:三項演算子を使えば簡単です。毛嫌いする人もいますが、ちょっとしたフラグ分岐などでけっこう使います。
  • 問2:改行コードはとあるエンコードにすると見ることが出来ます。あとは、適当に吐き出してみてください。なお、エンコード制御とPHPは切っても切り離せない腐れ縁です。
  • 問3:つまりは無名オブジェクトを使えってことです。スカラ値みたいなことがPHPにもできます。
  • 問4:round()関数を使います。でも、これだけだと整数しか対応していないので、あとは考えてください。けっこうPHP学習でも頻出の問題です。
  • 問5:PHPとデータベースは切っても持ちつ持たれつの関係ですが、セキュリティ対策には欠かせません。プレースホルダって何?とか言ってるなら即刻PHPから手を引いて下さい。
  • 問6:JavaScript学習で混乱しそうになった苦労じゃ…クロージャを使います。実はPHPでもできて、しかもJavaScriptより理解しやすい…気がする。
  • 問7:定数や関数は$がつかないので、普通はそれと認識してくれませんが、変数は$が付き、括弧でくくれば変数と認識してくれます。これを応用したテクニックで、知っておくと得します。
  • 問8:普通だとcannot redeclareなんとかって怒られますが、事前に「俺のもの」としておけば怒られません。
  • 問9:each()が非推奨となり、foreachの中にarray_map()を使うのは、PHP7以降欠かせない手法となりました。もっとも、同じ要素数なら初級~中級レベルですが…。
  • 問10:クラスの中で関数を使い回せるように、つまりトレイトを使います。PHPは普通だと並列処理できないですが、要は最終結果さえ合えばいいんです。

その他

ニコニコ動画はPHPで作られているので、PHPが嫌いとかいうやつはニコニコ動画に来な(ry

あと、文法がPerlと似ている部分もあるけど、根本的に違う点はPerlが後方互換性に優れているのに対し、PHPは常に流行をパクる採り入れる傾向にあり、古い記述をどんどん切り捨てている傾向がある。これは使用の多いとともに、セキュリティ的なリスクも多く背負っている言語なのも一因。

近年はRuby(Rails)、Pythonをプログラム入門に選ぶ人も増えてきており、いっときより勢いは弱くなっている。しかし、初心者向けのウェブページ制作で人気の高いCMSであるWordPressやハイブリッドアプリ制作にも用いられるLaravel、cakePHPなどのフレームワークなど、まだまだPHPはWeb上で一定の地位を保っている。

関連動画

関連コミュニティ

ニコニコミュニティは2024年8月に終了しました。

関連項目

  • CakePHP
  • プログラミング言語
  • Apache
  • Perl
  • Ruby
  • Python

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
もっと見る

急上昇ワード改

最終更新:2026/01/29(木) 15:00

ほめられた記事

最終更新:2026/01/29(木) 14:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP