Category Archives: PHP

はじめてのWordPressのプラグイン制作!

0
Filed under PHP, WordPress
Tagged as ,

WordPressのプラグインの仕組みを知ろうと思ってドキュメントを読んでいたら、思っていたより簡単そうなので、試してみました!
※参考文献:WordPressプラグインの作り方 (PDF。池田 百合子、2009年6月27日)

ソースを準備

簡単なプラグインは、本文を表示する仕組みにフックするプラグインとします。

適当なテキストエディタで、新規テキストファイルを作成します。
エンコーディングはUTF-8、改行コードはLF。
下記のようなコードを入力し、torques_test_plugin_001.phpとして保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
/*
Plugin Name: Torques Test Plugin 001
Description: my first plugin.
Version: 0.0.1
Author: Torques Inc.
Author URI: http://www.torques.jp/
*/
 
function hogehoge_content($arg_content) {
	return "(。・∀・)ノ ".$arg_content;
}
 
add_filter( 'the_content', 'hogehoge_content' );
 
?>

簡単なPHPスクリプトですので、説明するまでも無いですが、機能の説明をすると「本文の前に顔文字 (。・∀・)ノ を追加する」というプラグインになります。

プラグインインストール!

インストールと言っても、このテキストファイルを、 (WordPressルートディレクトリ)/wp-content/plugins/ に配置するだけ!

WordPressの「ダッシュボード/プラグイン/インストール済みプラグイン」を見てみると、ファイル内に記述した名前でインストールされていることがわかります。

あとは「有効化」をポチっとするだけで、もう完了!

さて、WordPressの公開側を見てみましょう。

出来ていますね!!

以上、WordPressプラグイン制作最初の一歩、でした!


[AD]

↓このキーホルダーは、iPhoneアプリから探せるし、iPhoneを探すことも出来る!iPhone4S専用だけど素晴らしいガジェット!キーホルダーにつけておこう!

SoftBank SELECTION IZCONY for iPhone 4S IZCONYとiPhoneを鳴らして探す ブラック

SoftBank SELECTION IZCONY for iPhone 4S IZCONYとiPhoneを鳴らして探す ブラック

定価:¥ 2,980

カテゴリ:エレクトロニクス


↓防水+GPS+各種エフェクト機能搭載!今一番欲しい、超お買い得コンデジ!

Nikon デジタルカメラ COOLPIX (クールピクス) AW100 サンシャインオレンジ AW100OR

Nikon デジタルカメラ COOLPIX (クールピクス) AW100 サンシャインオレンジ AW100OR

中古価格: ¥ 14,980 より

カテゴリ:Camera

発売日:2011-09-08


OSXでPHP使うときの注意点

2
Filed under Mac, PHP
Tagged as , ,

Mac OS Xのlocalhost上でPHPを勉強がてらテストしていたりするのですが、エラーが起きたとき、エラーが起きると画面が真っ白。で、頭も真っ白。原因の追求が面倒。
だと思い込んでいた。
ふと思ったのです。

photo by arslan_elver


これって、もしかして、エラー表示していないだけ??
そうだよ!
むしろ、なんで今まで真っ白のままで原因追求出来てたんだ、俺?

というわけで、PHPのエラーが発生したときに出力をするようにする設定を行い、解決しました。
OS XのPHPの設定はデフォルトで、出力をしないようになっているようなので、注意しましょう。

Mac OS XでPHPがエラー出力するように設定する

早速php.iniを調べてみました。場所は /etc/php.ini です。ターミナルで次のようにタイプすればおそらく適当なテキストエディタで開くのではないでしょうか。
% open /etc/php.ini
で、display_errorsの項目を見てみたらやっぱり非表示の設定になっている!これを直してもいいのですが、もしかしたら出したくない時もあるかもしれない、と思い調べてみたら下記のサイトに設定の方法がなんとおりか載っていたのでコピペします。

.htaccess で設定する場合

php_flag display_errors On

各PHPスクリプトで設定する場合

ini_set('display_errors', 1);

やりやすかったのは ini_set です。phpの頭に1行追加しておけばいいだけですから、ファイルも増えないし、apacheの再起動も要らないし。

やっぱりエラー出ないと開発難しい!
当たり前です。


[AD]

↓PHPの基礎部分が載っていそうなオライリー本。買うべきか?

プログラミングPHP 第2版

著者/訳者:Rasmus Lerdorf Kevin Tatroe Peter MacIntyre

出版社:オライリー・ジャパン( 2007-10-23 )

定価:

大型本 ( 448 ページ )

ISBN-10 : 4873113423

ISBN-13 : 9784873113425


↓こちらも気になるPHP本。安全であることに越したことはない。

入門PHPセキュリティ

著者/訳者:Chris Shiflett

出版社:オライリージャパン( 2006-05-01 )

定価:

Amazon価格:¥ 1,944

単行本 ( 120 ページ )

ISBN-10 : 4873112869

ISBN-13 : 9784873112862


Smarty:HTMLをちょっと賢くするPHPライブラリ

0
Filed under PHP
Tagged as , , ,

Smartyで解決!

あるサイトを構築するにあたって、その内容を多言語対応(日本語/英語)とPC/iPhoneの切り替えを行いたいと考えていた。
しかし、どうやったらスマートに構築出来るか分からず、いろいろと調べたり試したりして(その調査の一環がTomatoCMSを入れてみた経緯でもあるのですが)、ようやく「Smarty」という「テンプレートエンジン」による解決策にたどり着きました。


ある問題の解決方法を探るとき、その問題か解決方法の名前をわかっていないと、Google全盛の今の世の中でもちょっと調べるのが大変です。

考えてみると、作りたいサイトは簡単なHTMLであり、更新もそれほど無いし、自分で更新するサイトだし、且つ、今後そのサイトの機能は自分で拡張していきたい、という条件が揃っていたので、わざわざ自分ですべてを理解するのが難しいCMSを使いたくない、ということがわかってきたのでした。
「それでも、すべてをPHPで作るのはちょっと難しい。HTMLにif文とか変数とかあればいいのになぁ〜」と考えて、ウェブをあれこれ見ていたら「Smarty」というキーワードが目に止まった。その近くにある言葉は「テンプレートエンジン」。ちょっと調べてみたら、これだこれ!かなりいいぞ!とちょっと感動すら覚えた。
早速ダウンロードして試してみたらバッチリで、結局そのサイトは、Smartyを使って作り上げました。
そのSmartyについて概要をメモしておきます。

これはもうHTML++だ

HTMLでif文や変数を使いたいと考えたとき、Smartyならこう解決出来る、というサンプルをいくつか紹介してみます。

サンプル1: phpからのテンプレート読み込み例

まずは、ある条件でtrueなら index_true.tplに書いたHTML、falseならindex_false.tplに書いたHTMLを表示する、という例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
if( true ){
  $smarty->display('index_true.tpl');
}
else{
  $smarty->display('index_false.tpl');
}
?>
1
2
3
4
<!-- templates/index_true.tpl -->
<html><head><title>TRUE</title></head>
<body>true, true, true</body>
</html>
1
2
3
4
<!-- templates/index_false.tpl -->
<html><head><title>FALSE</title></head>
<body>false, false, false</body>
</html>

サンプル2: 変数をテンプレートに渡す

次は、php側で定義した変数をテンプレート(.tpl)側で呼び出して使用する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
// 定義.
$message = "Hello!! Smarty!!!";
 
// 左側がtpl内で使う変数名.
$smarty->assign('message', $message);
 
$smarty->display('index.tpl');
?>
1
2
3
4
5
6
<!-- templates/index.tpl -->
<html><head><title>TEST Smarty</title></head>
<body>
<p>I said "{$message}".</p>
</body>
</html>

サンプル3: 変数をテンプレートに渡す

次は、php側で定義した変数をテンプレート(.tpl)側でphpを使って処理する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
// 定義.
$value1 = 1;
$value2 = 2;
 
// 左側がtpl内で使う変数名.
$smarty->assign('v1', $value1);
$smarty->assign('v2', $value2);
 
$smarty->display('index.tpl');
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- templates/index.tpl -->
<html><head><title>TEST Smarty</title></head>
<body>
<!-- v1 -->
{if $v1 == 1}
<p>value1 is One.</p>
{else}
<p>value1 is not One.</p>
{/if}
<!-- v2 -->
<p>value2 is {$v2}</p>
 
</body>
</html>

その他の使い方

その他にもいろいろな使い方はありますが、とりあえずここまでのサンプルだけで大概のことは解決するような気がします。
あと下記の項目だけはよく使いそうなのでメモしておきます。

  • テンプレートに渡す変数が多くなったときには連想配列を使ったほうが良い。
  • テンプレート内に JavaScriptとか書いて問題が発生したときには、{literal}{/literal}で括ると良いです。

チートシートでざっくり見渡す

いろいろな言語やライブラリの特徴的なコード、リファレンス、クラス一覧などをまとめたチートシートというのが有志によって配布されていたりします。
Smartyについても作成されている方がおられました。

Smartyをよく使うならこれを印刷してて元に置いておくと良さそうですね。


[AD]

↓Smartyの本はこれがいいのかな?ウェブだけでは得られない周辺知識も得られるかも。

速習Webテクニック Smarty動的Webサイト構築入門 (Quick Master of Web Technique)

著者/訳者:原 一浩 青木 真 鵜飼 孝陽 川野辺 亮

出版社:技術評論社( 2008-09-20 )

定価:

大型本 ( 328 ページ )

ISBN-10 : 4774136301

ISBN-13 : 9784774136301


↓このSmarty本は5年前に出ている!知らないって怖いですね。そして、そんなに枯れた技術だと安心して使えるな〜。

Smarty入門‾PHP+テンプレート・エンジンでつくるMVCアプリケーション‾

著者/訳者:山田 祥寛

出版社:翔泳社( 2005-03-15 )

定価:

Amazon価格:¥ 3,024

大型本 ( 320 ページ )

ISBN-10 : 4798108839

ISBN-13 : 9784798108834


↓SmartyもPHPも関係ないけど、去年末に買ったNikonクリーニングキット。デジタル一眼レフのイメージセンサーやレンズを綺麗にする道具が一通り揃っています。付属のCD-ROMで映像が見れるのが良いです!あとは薬局で無水エタノールを買うだけ!

PHPでGET/POSTメソッド、そして連想配列

0
Filed under PHP
Tagged as

なんだかんだで2ヶ月前のこのエントリ以来PHPのエントリを書いていない。
実際、今月頭にPC環境の移行をしてからついこないだまでPHPを入れてすらいませんでした。
と、まぁ、こんな感じで、ゆるーくPHPのメモを書いてみます。世の中にPHPドキュメントはごまんとあるので、あくまで自分向けのメモとなります。

GET/POSTメソッドの値を受け取る手順

PHPでGET/POSTメソッドで渡された値を受け取るのは簡単で、1行で説明できます。

  • $_GET, $_POSTという連想配列に値が格納されている。

終わり。
超シンプルなサンプルは次のようになります。

1
2
// hoge.php?foo=bar&foo2=barbar
echo $_GET["foo2"]; // →"barbar"

GET or POST?

値の受け渡しがGETメソッドなのか、POSTメソッドなのかは、$_SERVER[‘REQUEST_METHOD’]という変数に格納されているようです。

1
2
3
4
5
6
7
8
9
$req_method = $_SERVER['REQUEST_METHOD'];
if( $req_method == "GET" ){
  // GETメソッドへの対応.
  echo "check for GET<br>\n";
}
else{
  // POSTメソッドへの対応.
  echo "check for POST<br>\n";
}

連想配列をまわす-foreach

$_GET、$_POSTというのは連想配列な訳ですが、PHP初心者的には、この連想配列の中身を調べる手順の方が重要なメモとなります。
PHPにはいろいろと便利そうな関数が用意されているようですが、foreachで回すのがおそらくシンプルで覚えやすい方法なので、まずはforeachで回してみます。

1
2
3
4
5
6
7
8
// 通常の配列.
foreach($normal_array as $value){
  echo "$value<br>\n";
}
// 連想配列.
foreach($_GET as $key => $value){
  echo "$key -- $value<br>\n";
}

連想配列をまわす-while

whileで回す方法もあったのですが、これは一見して意味が分かりにくい。each関数で処理するようですが、メモ程度に押さえておくだけにしよう。

1
2
3
4
5
6
7
8
// 通常の配列.
while($value = each($normal_array)){
  echo "$value<br>\n";
}
// 連想配列.
while(list($key, $value) = each($_GET)){
  echo "$key -- $value<br>\n";
}

連想配列をまわす-その他

PHPには他にも配列操作用の関数があれこれ用意してありますが、まぁ、無理して使うこともなさそうな気がします。一応、便利な使い道もありそうなarray_walkだけはメモしておく。

1
2
3
4
function print_values( $value, $key ){
  echo "$key -- $value<br>\n";
}
array_walk( $_GET, 'print_values' );

今日はここまで。