広告

記事検索

MOVION.netについて

WEB技術に関することや、気になるWEBサイトなどについて個人的なメモを残すためのブログです。

運営サイト

2008年05月20日(火)

PHP5でデザインパターン・Singleton(シングルトン)編

結構よく使うSingleton。インスタンスが1個であることを保証出来る。
php4で、Singleton中途半端に実装して、newもgetInstanceも誤って使うと訳がわからなくなります。

以下ソースコード。

  1. < ?php
  2. class Singleton {
  3.     private static $singleton;
  4.     private $_name;
  5.     private function __construct() {
  6.         print "create instance<br />";
  7.     }
  8.     public static function getInstance() {
  9.         if (!is_object(Singleton::$singleton)) {
  10.             Singleton::$singleton = new Singleton();
  11.         }
  12.         return Singleton::$singleton;
  13.     }
  14.     public function setName($name) {
  15.         $this->_name = $name;
  16.     }
  17.     public function getName() {
  18.         return $this->_name;
  19.     }
  20. }
  21.  
  22. print ‘Singleton.php test start.<br />’;
  23.  
  24. $object1 = Singleton::getInstance();
  25. $object2 = Singleton::getInstance();
  26.  
  27. $object1->setName(‘akira’);
  28. print $object1->getName() . ‘<br />’;
  29. print $object2->getName() . ‘<br />’;
  30. $object2->setName(‘yoshiko’);
  31. print $object1->getName() . ‘<br />’;
  32. print $object2->getName() . ‘<br />’;
  33.  
  34. $object3 = new Singleton();
  35. print $object3->getName() . ‘<br />’;
  36.  
  37. echo ‘Singleton.php test end.<br />’;
  38. ?>

これで、$objcet1も$object2も同じインスタンスです。
$object3は生成出来ません。

で、以下結果。
———–
Singleton.php test start
create instance
akira
akira
yoshiko
yoshiko

Fatal error: Call to private Singleton::__construct() from context ” in /var/www/public_html/exsample/Singleton.php on line 34
———–

34行目でprivateになってるコンストラクタを呼び出そうとしているので、エラー(Fatal error)が発生しています。
そのため、「Singleton.php test end.」までは進みません。

今さらなネタですが、とりあえず。

2008年05月8日(木)

Smoke Effect Tutorialを実際にやってみた

元ネタはこちら http://www.tutorialguide.net/smoke_effect_tutorial.html

フォトショップで、煙効果。おもしろそうだったのでやってみたが、なかなかうまくいかず。 手を抜こうと思ったのが駄目だったみたい。 というわけで、適当に日本語にしてみた。

STEP 1

適当なサイズで背景を黒にして新規画像作成をする(この効果は背景黒がベストだと思う)。で、”多角形選択ツール”を選択し、新規レイヤーに以下のような適当な形を描く。(色は何でもいいけど暗すぎるとだめかも) smoke-eff01.jpg

STEP 2

レイヤースタイルの「光彩(内側)」で、描画モードを「ビビットライト」とかを選択し、エレメントのサイズも適当に調整して、以下のような感じにする。

smoke-eff02.jpg

smoke-eff03.jpg

STEP 3

さあ、霧っぽくしていくよ。”フィルタ>変形>波形”パラメータはデフォルトのままで「OK」を押す。

smoke-eff04.jpg

smoke-eff05.jpg

STEP 4

変な形になったら、すかさず”編集>「波形」をフェード”を選択。で不透明度は50%くらいに。
あとは、STEP3、4を良いと思える感じになるまで繰り返す。ここで注意なのはSTEP3を手抜きして、Ctrl+Fをしちゃうと霧にはならないみたい。変形の時は、「開始位置を乱数的に変化させる」を押したほうがよさげ。

smoke-eff06.jpg

※なんか結局うまくいかなかった・・・。
smoke-eff07.jpg

STEP 5

あとは適当にリサイズして合成したり、色を部分的に変えたりとかしてお好みの感じに調整してください。
(これまたセンスがなく微妙なのが出来てしまいました。)

smoke-eff08.jpg

以上。