2010/06/16

CakePHPでSmartyを使う設定にてハマった。際のメモ

 CakePHPにはSmartyViewというものが公開されていて、
ビューをthtmlでもctpでもなく、うまいことSmartyが使えるようになる。

そんな感じで設定をしていたら

function call 'assign_by_ref' is unknown or deprecated.

なんだこれ( ゚Д゚)y─┛~~

と思いつつググったら出た出た。
http://www.smarty.net/forums/viewtopic.php?p=64427

It's now assignByRef.

要するに現在のバージョンは、assign_by_refという名前ではなく、
assignByRefですよってことらしい。

どうやらSmarty3.0で変わったらしい。
なので、Smarty2.6.25以前を使えばこの件に関しては解決できます!

2010/06/13

WordPress MUのインストールメモ

WordPressをインストールしたときはサクッとできたが、
WordPress MUインストール方法にはクセがあるためメモ。

以下、Windows XP、XAMPP環境でのインストール方法です。

1.WordPress Muをダウンロード&解凍
解凍したフォルダをwordpress-muにリネームする。

2.htdocs配下にWordPress-muを置いて、アクセス!
http://localhost/wordpress-mu でアクセスする。


Warning!
Installing to http://localhost/ is not supported. Please use http://localhost.localdomain/ instead.


なんじゃ、こりゃΣ(・ω・ノ)ノ!!
ググってみたら特殊な設定が必要らしい。
 C:\Windows\System32\drivers\etc\hosts
上記のファイルに一行追加。
▼変更前
127.0.0.1       localhost
::1                localhost

▼変更後
127.0.0.1       localhost
::1                localhost
127.0.0.1       localhost.localdomain

こんなんでホントにいけるんかい…
と思ったが、やはりこれだけではダメ。
URLを
http://localhost.localdomain/wordpress-mu/
でアクセスしましょう。
※ 通常版のWordPressではwp-config-sample.phpをリネームして
編集する必要がありますが、WordPress-MUではノンタッチです。
どうやら画面から入力したDB名などが自動的で
wp-config-sample.phpに反映されて、wp-config.phpにリネームされます。


3.必要事項を入力する





































そして、submitボタンを押下すると、完了画面に遷移します。

























うまくいくと以下のようにwp-config.phpができあがります。
















4.完了

























うまくいくと、上の画面に遷移します。
赤枠で囲ってある部分に管理者画面への
ログインIDとパスワードが記載されてますので、メモしてください。
※テーブル上にはMD5はなにかでパスワードが暗号化されているので
あとで確認するのは困難です!必ずメモを!!

6.ブログを見る
以下のURLにアクセスすると、あたなのブログが見れます!
http://localhost.localdomain/wordpress-mu/

なかなかトリッキーでしたね。

2010/06/06

PHPの開発環境を作る(2) IDE(PDT:PHP Development Tool)

PHPの開発環境を作るを作ります。
前回はPHPが動く環境ができたので、
今回はIDEを導入してみます。IDEってのは統合開発環境 のことで、
要はエディター(メモ帳のすごい版)と思えばよいです。

IDEにも種類がありますが、EclipseとEclipseのプラグインである 
PDT:PHP Development Toolを使います。

1.以下からEclipseをダウンロードする
尚、このEclipseにはPDTが含まれているため、
ダウンロードすれば、50%完了下も同然www

http://mergedoc.sourceforge.jp/
[Pleiades]をクリック→[Eclipse3.5 Galileo Pleiades All in One]をクリック。
すると以下の画面が表示されるため、赤い丸印のついているボタンをクリックします。

















すると画面が変わり、以下のようになればダウンロード中です☆
















2.ダウンロード完了後に解凍し、eclipse.exeを実行する
以下のような画面が表示されるはず。workspaceがなんちゃらとか言われた場合、
とりあえずOKを押して進んでください。















次回は、コードの補完機能などにも触れていきます。

2010/06/02

PHPでバッチを作る、の巻

ソフトウェア開発に携わっていると、割とバッチを使うシステムが多い。
バッチを作るのはJavaPro*Cがメジャーな気がするけど、
中にはPHPを採用する開発もあるのですねー。
今回は、Cシェル(csh)とPHPでバッチを作るぞー。

以下、スケルトン。

▼Cシェル(csh)
 #!/bin/csh -f

# 共通環境変数
setenv HOME_SH `dirname $0`
source ${SH_HOMEH}/.envcshrc

# ここでPHP実行する
${PHP_CMD} ${EXEC_HOME}/hoge.php >>& ${LOG_FILE}

# PHPの実行結果をcronやSystemWalkerに渡す
exit $status


▼PHPバッチ

 <?
    // 必要なモジュールを読み込む
    require_once getenv("INC_PATH") . "/Log4PHPphp";

    // いつもどおり、PHPの処理を書く

    // Cシェルに終了コードを返す
    exit(0);


以上。割と簡単ですよネ。
PHPでexit()する際に、引数を渡してあげると、
環境変数$statusで参照できるのを知っていると便利です。


2010/05/26

CakePHPで自動レンダリングをオフにする

CakePHPはデフォルトで自動レンダリングがオンになってる。
なので、アクションが呼ばれると自動で「アクション名.ctp」が
呼ばれる。この機能がウザいときはオフにしましょ。

class CustomersController extends AppController {
// falseにすると自動レンダリングがOFFになる
var $autoRender = false;
}

2010/05/23

フォルダ内の画像数を数える

PHPで 特定のディレクトリやフォルダ内の画像数を数える方法。
なお、拡張子を変更すれば特定のファイルの数をカウントできる。

<?php
$targetDir = 'C:\xampp\htdocs\test';
$jpegFiles = glob($targetDir. DIRECTORY_SEPARATOR . "*.jpg");
echo count($jpegFile);

2010/05/22

CakePHPで半角英数字以外を削除する

半角英数字以外を削除したい場合は多い。
今回はCakePHPでの手法を紹介。

▼半角英数字と半角スペース以外を削除する(!!が消える)
$text = "CakePHP is PHP's Framework!!";
$text = Sanitaize::paranoid($text, array(" "));

▼処理後の$textの中身
CakePHP is PHP's Framework

2010/05/20

ローカルでは動くのにサーバでは動かない時の対処法

ローカルでは動くのにサーバでは動かない。よくある話ですな。
 画面が真っ白になるとか、Permission deniedとか。

画面が真っ白になる際は、原因を特定するために
画面にエラーメッセージを表示させるのが得策かと。
以下の一文をソースの先頭にでも埋めるとよい。
真っ白画面からおさらばできるはず。

ini_set('display_errors', 1);
http://php.net/manual/ja/function.ini-set.php

Permission deniedエラーが出ている際は、
パーミッションの設定が適切でないので、
適切なパーミッションを設定してネ(・ω・`)

http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3
http://ja.wikipedia.org/wiki/Chmod

PHP ベンチマーク

PHP版のベンチマークを作ってみた。
測りたい処理を//処理の部分に書くとよろし。

<?php
$start_m = microtime();
$start = time();

for ($i = 0; $i < 100000000; $i++) {
    // 処理
}

$end_m = microtime();
$end = time();
$bench = ($end - $start) + ($end_m - $start_m);
var_dump($bench);

2010/05/18

CakePHPでリダイレクトする

CakePHPリダイレクトするにゃー、以下のようにするです。

$this->redirect("/customers/index");

2010/05/17

CakePHPでSQLコマンドを実行する

CakePHPには簡略化されたO/Rマッッパーを持ってるけど、
自分でサクッとSQLを実行したいときがある。
以下で行えます。

$this->Customer->execute("TRUNCATE customers");

2010/05/16

PHPでタグクラウドを作る

はてななどで使われているタグクラウドを作ってみた。
ぶっちゃけPEARのライブラリに存在するんだけどねw
http://pear.php.net/manual/ja/package.html.html-tagcloud.php

ま、車輪の再開発がどうのうこうのって話もありますが、
そこから何かを得ることができれば無駄じゃないはず。

▼ソース
<?php
echo <<<HTML
<style>

ul.tagCloud {
    margin: 0;
    padding: 0.5em 10px;
    line-height: 1;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
}

ul.tagCloud li {
    margin: 0;
    padding: 0;
    display: inline;
    font-size: 100%; /* ここで相対的に文字サイズを変更 */
}

ul.tagCloud li a {
    text-decoration: none;
}

/* タグレベル1~6 */

ul.tagCloud li.level1 a {
    font-size: 167%;
    color: #db00aa;
    font-weight: bold;
}

ul.tagCloud li.level2 a {
    font-size: 136%;
    color: #e771b4;
    font-weight: bold;
}

ul.tagCloud li.level3 a {
    font-size: 122%;
    color: #bf79b5;
}

ul.tagCloud li.level4 a {
    font-size: 114%;
    color: #a57c9d;
}

ul.tagCloud li.level5 a {
    font-size: 92%;
    color: #897c9d;
}

ul.tagCloud li.level6 a {
    font-size: 77%;
    color: #567d9d;
}

/* オンマウス色 */
ul.tagCloud li a:hover {
    color: #000;
}

</style>
HTML;

class Keyword {

    private $keyword;
    private $url;
    private $class;

    public function Keyword($keyword, $url, $class) {
        $this->keyword = $keyword;
        $this->url = $url;
        $this->class = $class;
    }

    public function getKeyword() {
        return $this->keyword;
    }
    public function getUrl() {
        return $this->url;
    }
    public function getClass() {
        return $this->class;
    }
}

$keywordList[] = new Keyword('Zend Framework', 'http://yahoo.co.jp', 'level2');
$keywordList[] = new Keyword('CakePHP', 'http://yahoo.co.jp', 'level3');
$keywordList[] = new Keyword('symfony', 'http://yahoo.co.jp', 'level1');
$keywordList[] = new Keyword('Ethna', 'http://yahoo.co.jp', 'level6');
$keywordList[] = new Keyword('Mojavi', 'http://yahoo.co.jp', 'level3');
$keywordList[] = new Keyword('SilverStripe', 'http://yahoo.co.jp', 'level2');
$keywordList[] = new Keyword('Seagull', 'http://yahoo.co.jp', 'level6');
$keywordList[] = new Keyword('Joomla!', 'http://yahoo.co.jp', 'level1');
$keywordList[] = new Keyword('Midgard', 'http://yahoo.co.jp', 'level4');

echo "<div style=border: 1px; solid red; width:500px;>";
echo "<ul class=\"tagCloud\">";
foreach ($keywordList as $keyword) {
    echo "<li class='" . $keyword->getClass()  . "'><a href =" . $keyword->getUrl() .">" .$keyword->getKeyword() ."</a></li>";
}
echo "</ul>";
echo "</div>";

▼実行結果





2010/05/15

PHPの開発環境を作る(1) XAMPP

PHPが動く環境構築するには、少なくともApacheやPHPが必要。
データベースにはMySQLが多く使われたり。
PHP開発をしたくても初心者だと環境を作ることが困難だったりします。
そこで、楽に環境をつくることができるXAMPPを紹介します。

XAMPPとは、Apache、MySQLとWebプログラミング言語であるPHPや
Perlの4つの主要ソフトウェアとphpMyAdminなどの管理ツールなど、
いくつかの補助的なソフトウェアとライブラリモジュールが1つになってます。



以下、PHPの環境設定方法

※私はVista環境で環境を作ったけど、Windows系なら以下の方法でイケます。

1.以下からXAMPPをダウンロードする
apache friends
・XAMPP Windows版 1.7.3, 2009/12/23 と記載されている方の[EXE]をクリックし、
ダウンロードする

2.ダウンロードしたファイルをダブルクリックしてXAMPPをインストールする









 




なお、C:\xampp となるようにしてください。

3.Apacheを起動する
[スタートメニュー]→[プログラム(P)]→[XAMPP for Windows]→[XAMPP Control Panel]を
クリックする。すると下記のウィンドウが表示されるので[Apache]の右側のStartボタンを
押すと、Apacheが起動する。














 


4.Webアプリケーションを作る!!
たとえば、C:\xampp\htdocs\test とかネ。
次に、以下のソースをコピペして作ったファイルをtest 配下に設置し試してみてください♪▼index.php
<html>
<body>
<?php
echo 'Hello サクサクPHP!!';
?>
</body>
</html>

拡張子は「.php」にしてネ!



最後に…
http://localhost/test でWebアプリにアクセスできます☆
「'Hello サクサクPHP!!'」と表示されるはずです。
いえーい♪



C:\xampp\htdocs\の下に好きな名前でフォルダを作る。

CakePHPでテーブルの作成日時、更新日時を自動的に更新させる

CakePHPは、ある規則に従ってテーブルを作ると、
テーブル作成日時更新日時自動的更新してくれます。

以下、手自動更新のためのテーブル作成規則。
  1. カラム名:データ挿入日時はcreated、修正日時はmodified または updated
  2. 型:datetime
  3. NULL:許可
  4. デフォルト値:空文字
これさえ守れば、いちいちupdateする際に更新日時を気にする
必要がなくなります。小さいことですが、さりげなくありがたい
(*゚∀゚)=3ハァハァ


CakePHPのsaveメソッドの戻り値

saveメソッドの戻り値について。
成功したらtrue、失敗したらfalseを返す。


のではなく…
  • 成功したら、modelにセットしたデータを返す
  • 失敗したら、falseを返す
  • modelにセットしたデータが正しい形でないときtrueを返す
割とトリッキーなメソッドですよネ。
戻り値は成功・失敗の2値(true or false)にして、
成功した場合、第2引数にtrueが渡されたら
modelにセットしたデータを返す仕様の方がわかりやすいのでは…
(・ω・`)

PHP SwitchでPHP4とPHP5を簡単に切り替える

ソフトウェア開発においてバージョンに悩まされることがある。
PHPでは、PHP Switchを使うことでPHP4とPHP5を簡単に切り替えることが出来る。
なお、PHP Switchは
XAMPPに付属されている(=゜ω゜)ボー

▼使い方
C:\xampp\php-switch.bat

4を入力すると、PHPが 4 => 5 に切り替わります。

PHP4がアクティブな場合、同様に php-switch.batするだけで、PHPが 5 => 4 に切り替わる。

2010/05/13

Javaの変数名にひらながな、カタカナを使う

Javaの変数名にひらがなやカタカナって使えるの?
って質問がWeb上に溢れかえってます。なので、1例をご紹介。

public class Hoge {
public static void main(String[] args) {
boolean ω = true;

// 顔文字ループ(笑)
for (;ω;) {
System.out.println("※無限ループに入ります!");
}
}
}

下記サイトが参考になるかと。
5分でわかる今週のJava ホットトピック

2010/05/12

html_checkboxes拡張 N個目で改行させる

html_checkboxes は簡単にチェックボックスを作成する
Smartyのカスタム関数。

▼PHP
$technologyList['0'] ='symfony';
$technologyList['1'] ='CakePHP';
$technologyList['2'] ='Zend Framework';
$technologyList['3'] ='CodeIgniter';
$technologyList['4'] ='Maple';

▼Smarty
{html_checkboxes name="language" options=$technologyList separator="<br />"}

▼実行結果









上記の例では、チェックボックス1つ表示するごとにseparator属性で指定した
値で区切られてしまうため、3つ表示したら改行するように拡張

▼Smarty

{html_checkboxes name="language" options=$technologyList assign="checkboxes"}
{foreach from=$checkboxes item="checkbox"}
{$checkbox}{cycle values=",,<br />"}
{/foreach}

▼実行結果




若干ずれているのはtableタグとCSSを使えばサクっと直りますネ。

2010/05/11

PHPとは

PHPとは、プログラミング言語の1つ。
Microsoft WordやInernet Explorerもプログラミング言語を
使って作られている。ただし、PHPは主にWebアプリケーションの
開 発に使われます。

Webアプリケーションってのは以下のような
ブラウザを介して使うアプリだと思えばよいかと。

GREE
http://gree.jp/

Yahoo! ブックマーク
http://bookmarks.yahoo.co.jp/

ちなみに、上記サイトは2つともPHPによって作られ てます。

うん?プログラミング言語ってJavaとかC#とか色々あるけど、
PHPを使うメリットって何?と思う方もいますかね。
な ので、PHPのメリットとデメリットを挙げておきます。

メリット
・ 習得が簡単
・各種ライブラリが充実
・開発において単価が安い

デメリット
・関数名などに一貫性がない(開発において実害は無い)
・セキュアでない(開発において実害は無 い)

職業がエンジニアのため、日頃からPHPを触っているわけですが、
Webサイトを俳諧しているとPHPって?PHPとは?というキーワードを
見かけます (・ω・`)なので、自分なりにPHPの紹介をしてみた。