2008年11月30日日曜日

 

【rhaco】XMLパーサ - SimpleTag

rhaco.org
rhaco-users.jp
download:rhaco[rhaco_1_6_1.zip]

rhacoについて

rhacoは非依存のPHPライブラリで、PythonフレームワークであるDjangoライクな変態フレームワークとして認知されている。
MVCを実現する機能の他に、用意されてるXMLパーサSimpleTagが便利だと有名。PHP4でも使える。

逆引きrhaco(?)13: htmlソースからpタグの内容を取り出す - rhacoアプリ開発日誌
rhacoのSimpleTagを試してみました - せつないぶろぐ
rhacoでXMLパース - 株式会社RYUS

使い方

rhacoの使い方は、ダウンロードしたファイルを展開してディレクトリごとアップロード。
ソースからディレクトリ「rhaco/」下の「Rhaco.php」を呼び出す。
(フレームワークとして使う場合は「rhaco/setup.php」にアクセスして設定する)

<?php
  require_once('rhaco/Rhaco.php');

続けてSimpleTagを呼び出す。

  require_once('rhaco/tag/model/SimpleTag.php');
// または
  Rhaco::import('tag.model.SimpleTag');

サンプル

/* SimpleTagサンプル */
<php
  Rhaco::import('tag.model.SimpleTag');
  $src = "<body><div><p>foo</p></div><div><p>bar</p></div></body>";
  $tag = new SimpleTag();
  $tag->set($src);
  $p_tags = $tag->getIn('p');
  foreach ($p_tags as $p_tag) {
    echo $p_tag->getValue();
  }
/* 出力結果 */
foobar
SimpleTagでスクレイピング - rhacoに関するメモ
SimpleTag と SimpleXML->xpath の比較 (rev3115) - gounx2の日記 - gounx2の日記
SimpleXmlとSimpleTag比較:twitterのhomeをスクレイピングしてみた。

さらに細かく指定して抽出するには以下の通り。
idやclassで抽出するには以下の関数を使う。子要素、孫要素まで取得もしてくれる。
XML記法で取得するSimpleXML関数との比較。

/* idで抽出 */
//SimpleXML
$xml->xpath('//div[@id="content"]')
// SimpleTag
getInAndParameter($tag, 'div', 'id', 'content');
/* classで抽出 */
// SimpleXML
$xml->xpath('//tr[contains(concat(" ",@class," ")," hentry ")]')
// SimpleTag
getInAndParameter($tag, 'tr', 'class', 'hentry');
/* SimpleTagを使って属性値(パラメータ)で取得する関数 */

<?php
 /**
 * タグ名 が $tagName で パラメータ名 が $parameterId で パラメータ値 が $value のタグを全て抽出する。
 * @param SimpleTag $tag 配列でも可
 * @param string $tagName 抽出条件 タグ名
 * @param string $parameterId 抽出条件 パラメータ名
 * @param string $value 抽出条件 パラメータ値
 * @param string $recursive 再帰抽出するか?
 * @param string $value_rex パラメータ値を正規表現で評価するか?
 * @return array SimpleTagの配列
 */
 function getInAndParameter($tag, $tagName, $parameterId, $value, $recursive=null, $value_rex=null) {
   if ($recursive === null) {
     $recursive = ($parameterId === 'id' ? false : true);
   }
   if ($value_rex === null) {
     $value_rex = false;
     if ($parameterId === 'class') {
       $value_rex = true;
       $value = '/(^|\s)' . $value . '($|\s)/';
     }
   }
   if (is_array($tag)) {
     $ret = array();
     foreach ($tag as $item) {
       $ret = array_merge($ret, getInAndParameter($item, $tagName, $parameterId, $value, $recursive, $value_rex));
       if (!$recursive && count($ret) === 1) break;
     }
     return $ret;
   }
   return _getInAndParameter($tag, $tagName, $parameterId, $value, $recursive, $value_rex);
 }

 function _getInAndParameter($tag, $tagName, $parameterId, $value, $recursive, $value_rex) {
   $ret = array();
   foreach ($tag->getIn($tagName) as $item) {
     if ( (!$value_rex && $item->getParameter($parameterId) === $value) || ($value_rex && preg_match($value, $item->getParameter($parameterId)))) {
       $ret[] = $item; if (!$recursive) return $ret;
     }
     $ret = array_merge($ret, _getInAndParameter($item, $tagName, $parameterId, $value, $recursive, $value_rex));
     if (!$recursive && count($ret) === 1) return $ret;
   }
   return $ret;
 }

rhacoはまだドキュメントがまとまってないようなので困るところもある。
SimpleXML関数はPHP5以降からだが、自分は気にしないのでどっちが便利か使っていこう。

関連

PHPでさくっとスクレイピングしたい。SimpleScrape - gounx2の日記
PHPでのスクレイピングに役立つライブラリ - (DxD)

ラベル:


2008年11月29日土曜日

 

【Javascript】Google Maps APIの基本的な使い方の分かり易い説明のサイト※追記有

Google Mapsの基礎 - SmartSmart
Google Maps 活用講座

ラベル: ,


 

【PHP】Twitter APIの利用とbot作成

Twitter API 仕様書
Twitter APIを使ってみる - kwLog
jQueryを使ってTwitterをおいしくマッシュアップ - @IT総合トップ
Twitter APIについて - Hatsune's Journal Japan Twitter APIをphpで使う方法(サンプル) - りょーちの駄文と書評
twitter API と MOGO2 もごもご APIの仕様が殆ど同じな件
PHPでTwitterに投稿 - HIRACCHI H.D.
PHPによる誰でも出来る簡単Twitterbotの作り方 - 遥か彼方の彼方から
Twitter,もごもごAPI を使ったPHP投稿サンプル - WEBで何か作るよ(Ajax/php etc.)

関連

PHPでwassrに投稿する方法 - makotoworldのはてなダイアリー

参考書

Twitter!―Twitter APIガイドブック
Twitter!―Twitter APIガイドブック

Twitterの本
Twitterの本

ラベル: ,


2008年11月27日木曜日

 

XREAでEC-CUBEの運用とSSLについての記録

XREAにEC-CUBEはインストール出来るけど、運用には向きませんというお話。

共有SSLだと別ドメインとみなされるので買い物カゴが空になっていたのは2.1.2くらいで対応した。

URL(通常) http://○○○.jp
URL(セキュア) https://○○○.jp

ところがカゴには入るが、レイアウトが崩れたりする。階層が違うと画像やCSSへのリクエストが上手くいかない模様。

XREAの例
URL(通常) http://www.○○○.jp
URL(セキュア) https://ss1.xrea.com/www.○○○.jp
CORESERVERの例
URL(通常) http://www.○○○.jp
URL(セキュア) https://ss1.coressl.jp/www.○○○.jp
EC-CUBE 2.1.2正式版 共有SSLについて - EC-CUBE開発コミュニティサイト

スレッドで上がった解決策。

ドメイン直下ではなく2番目のパス設定と「.htaccess」でリダイレクトで対応させようとしたが、上手くいかなかった。ドメイン直下だと違うのか。

解決策としてはCORESERVER.JP(初期費 1,000円+年間5,000円+独自SSL 年間18,000円+ドメイン費)にする。XREAでは独自SSL取れない。

またはEC-CUBEがオプションで付いてる使えるねっとを借りる(初期費 500円+年間3,780円(ドメイン料込)+独自SSL 年間40ドル)。
サーバが提供してるのでもしかしたら共有SSLでも対策取れてるかもしれないし円高だし。

関連

SSL用のディレクトリが違う場合の対処方法 - EC-CUBE開発コミュニティサイト
XREA+ - ryusendo::eccube

ラベル:


2008年11月22日土曜日

 

【Perl】すぐわかるオブジェクト指向Perl~その2

参考書

すぐわかる オブジェクト指向 Perl - 深沢 千尋 (著)
技術評論社刊『すぐわかるオブジェクト指向Perl』公式サポートページ http://www.supee.jp/sop/
第14章 オブジェクト指向モジュールを使ったCGI

CPANを利用したプログラムの例として、Calendar::Simpleを使ったカレンダーを表示するCGIが載っている。

サンプル コード

公式ページのおたよりにもあるが、CPANからダウンロードできなくなっている。

CPANでCalendarモジュールがインストールできない。。。

なので、tar.gzファイルをダウンロードしてインストールする。

Calendar-Simple
CPAN's 14658 modules distributions
∟Calendar DAVECROSS Calendar-Simple-1.20.tar.gz

適当なところにダウンロードして、以下のコマンドで展開・インストール。


$ tar -zxf Calendar-Simple-1.20.tar.gz
$ cd Calendar-Simple-1.20
$ perl ./Makefile.PL
$ make
$ sudo make install

簡単な使い方は次を参照。

Calendar::Simple - シンプルなカレンダーを作る為のPerl拡張

関連

Simple PHP Calendar

ラベル:


2008年11月19日水曜日

 

EC CUBEをXREAサーバにインストール

参考

EC CUBEのインストール時の文字化けを解決する1つの方法Comments - ヒロノート@WECSy Marketing
xreaへのインストール方法 - EC-CUBEマニュアルサイト

テスト用インストール。ディレクトリも丸ごとアップロードで共用SSLのXREA。
本番用は公開ディレクトリなど配慮。あと専サバ。

環境

EC CUBE 2.3.2、PHP 5.2.5、MySQL 5.1.20-beta、XREAサーバ

準備

ダウンロード
EC-CUBEのダウンロード

EC-CUBE Ver2正式版 (最終更新日:2008年11月7日)Version 2.3.2(zip)を今回はダウンロード。

.httaccess
どこかのサイトからコピペ。

#基本はphp_ini.incで設定するが、ini_setで反映されないものはここで設定する
php_value mbstring.language Japanese
php_value default_charset UTF-8
php_value output_handler mb_output_handler
php_flag mbstring.encoding_translation 1
#マジッククォートOff - 自動で「"」「'」をエスケープしない
php_flag magic_quotes_gpc Off
#php_flag session.use_cookies 0
#php_flag session.use_trans_sid 1
# INI_ALL なのにもかかわらず, ini_set で指定しても反映されない環境がある...
php_value mbstring.internal_encoding UTF-8
# デフォルトテンプレートの状態で 2M近くになるため
php_value upload_max_filesize 5M
# セーフモードOffのモジュールPHPに切り替える
AddHandler application/x-httpd-phpcgi .php

マニュアルには


register_long_arrays

を次の様に変更と書いてある。


php_flag register_long_arrays ON

が、なくても動きはする。念のためには入れておこう。

php.ini

マジッククォートをOffにするため、関連ディレクトリすべてに配置する。
マニュアルにターミナルからコマンドで一括コピーの実行ファイルがあるので参考に。

/* php.ini */

magic_quotes_gpc = off
SC_DbConn.php

MySQLの場合の文字化け対策。「data/class/SC_DbConn.php」の55行目くらい。UTF-8セット。

/* data/class/SC_DbConn.php */

if(!isset($objDbConn->connection) || $new) {
    if($dsn != "") {
        $objDbConn = DB::connect($dsn, $options);
        $this->dsn = $dsn;
        $buf = $objDbConn->prepare('SET NAMES utf8'); // 追記
        $objDbConn->execute($buf); //追記

インストール

「http://username.sXXX.xrea.com/eccube/html/install/」にアクセス。

インストールを開始します
次へ進む

アクセス権限のチェック
次へ進む

必要なファイルのコピー
次へ進む

ECサイトの設定/WEBサーバの設定
情報を入力。ログインIDとパスを忘れないように。
サーバはとりあえずデフォルト。
次へ進む

データベースの設定
DBの種類、DB名、DBユーザ、DBパスワードを入力。
DBの種類は可能であればPostgreSQLを選べば文字コード・トラブルは解消される。
次へ進む

データベースの初期化
確認。
既に作成されている場合はデータベースは削除される。
次へ進む

データベースの初期化
実行。
データベースは削除されます。
次へ進む

サイト情報について
デフォルト。
次へ進む

EC CUBE インストールが完了しました。
管理画面にログインできます。

セキュリティ

データベースのパスワードが丸見えになってしまうので、下記を.htaccessに設定。

.htaccess

<Files ~ "^.*.inc$">
 Order allow,deny
 Deny from all
 Satisfy All 
</Files>

再インストールに関して

文字化け等で再インストールした場合は、キャッシュが残って文字化けしたままのページがあるので「data/cache」を削除する。
マジッククォート・エラーと思われる"\"絡みのURLエラーなどある場合(自分の場合はSmartyエラー「Smarty.class.php」とか)「/html/user_data/packages/default/bloc」にあるテンプレートファイルがマジッククォートされてるので、ダウンロードして「\"」を置換するといい。

Zen CartとEC CUBE

Zen Cartはたくさん追加モジュールがあるしカスタマイズ性も高い。共有SSLにも対応している。
その分、管理画面が非常に使いづらい。項目が多すぎるし海外製のためか設定の仕方も分かりづらい。この辺を使いやすくするモジュールはない(それで商売してるのだろうか)。日本語版にしても主要部は日本語化してるがところどころ英語のままだ。

EC‐CUBEは日本製のためか管理画面は分かりやすく、余計なものもない。商用ショッピングシステムやWordpressのUIくらい使いやすい。
モジュールなど拡張機能はないし、フリーテンプレートも見つからない。直接ソースを書き換えるしかなさそうだ。デザインは特に問題ないだろう(Smartyだし)が機能のカスタマイズは敷居高そう。
セキュリティ上、専用サーバ推奨らしいのと文字コードが一番の問題だろう。
PostgreSQLで専用サーバが使える(特にはphp.iniが設定できる)のであればほとんどの問題はクリアされるだろう。

ラベル:


2008年11月18日火曜日

 

【オープンソース】EC-CUBEインストール参考サイト【XREA】※追記

EC-CUBE
EC-CUBE(1.x系)/1_インストール
EC-CUBE(2.x系)/1_インストール
EC-CUBEがインストールできるホスティングサービス
xreaへのインストール方法
P2パソコン教室
XreaにEC-CUBEを導入 まとめ
EC-CUBE パスを変更して設定してみる Xrea
EC-CUBEを設定してみる Xrea
【オープンソース情報サイト】 - 00px -
XreaにEC-CUBE2.0.0ベータ版をインストール
XreaにEC-CUBEをインストール(ドメイン直下版)
Code Archives
XREAにEC-CUBEをインストールしてみた
EC CUBEで作るショッピングサイト

1系と違い2系は「文字コードがUTF-8、複数カテゴリ対応」らしい。
安定してるのは1.4.6。1.3.4を基にしたコミュニティ版はUTF-8。
EC-CUBEは専用サーバ、レンタルサーバならZen-Cartがいいらしい。
XREAは共有SSLなので上位プランのCORESERVERが良いらしい。
ちなみに俺はインストールしてない。それ以前にファイルアップロードが上手くいかないからやる気失せた。

追記:2008/11/18
EC-CUBEをインストールすると文字化けする人へ - エロゲプレイ記
解決策
・PostgreSQLを使わない(MySQL4.1以降の文字列エンコードの扱い方が変わった事による弊害なので)
・UTF-8対応のEC-CUBE コミュニティ版(非公式)の改造の一部を適用する
使って学んで遊び倒す!「EC-CUBE学校」のサイトがオープン! - カゴラボ的EC-CUBE開発ブログ
EC-CUBEの学校

ラベル: ,


2008年11月11日火曜日

 

PHP再入門- オブジェクト指向 その3

継承に関して、とMVCの参考に。

PHPなオブジェクト指向入門 vol.3(前半)
PHPなオブジェクト指向入門vol.3(後半) - 真夜中のプログラミングTips

リンク先を参考にCalculateクラスを修正。
PHP再入門- オブジェクト指向 その2 - さぼてん (2008年11月11日記事)

/* Calculate2クラス - Calculateクラス修正 */
class  Calculate2 {
  var $a = 0;
  var $b = 0;
  var $sum = 0;
  var $error = array();

  // コンストラクタ - 初期化
  function __construct($a,$b) {
    $this->set_a($a);
    $this->set_b($b);
    $this->Sum();
  }
  function set_a($a) {
    (is_numeric($a)) ? $this->a = intval($a) : $error[] = "$a is not Int.";
  }
  function get_a() {
    return $this->a;
  }
  function set_b($b) {
    (is_numeric($b)) ? $this->b = intval($b) : $error[] = "$b is not Int.";
  }
  function get_b() {
    return $this->b;
  }
  function Sum() {
    $this->sum = $this->a + $this->b;
  }
  function getSum() {
    return $this->sum;
  }
  // エラー関数
  function IsError(){
    (count($this->error) > 0) ? return $this->error; : return FALSE;
  }
}

Calculateクラスを継承して結果の表示を「a+b=c」形式にするもの。

/* displaySumクラス - Calculateクラス継承 */
class displaySum extends Calculate {
  funtction __construct($a,$b) {
    parent::__construct(); // 親クラスのコンストラクタ呼び出し
  }
  // 関数getSum()オーバーライド
  function getSum() {
    return "$this->get_a()+$this->get_b=parent::getSum()"; // parent::getSum() - Calculate2クラスから呼び出し
  }
}
継承を使わずにクラスの拡張 - オブジェクトコンポジション

クラスの中で他のオブジェクト・インスタンスを作成する。

/* displaySumクラス - オブジェクトコンポジション */
class displaySum {
  var $obj;
  funtction __construct($a,$b) {
    $obj = new Calculate($a,$b); // Calcurate クラスのインスタンス作成
  }
  function getSum() {
    return "$this->obj->get_a()+$this->obj->get_b=$this->obj->getSum()"; 
  }
}

いくつものクラス・インスタンスを作成して多重継承の様にもできるが注意。

間違ってたら教えてください。ごめんなさい。

ラベル: ,


 

PHP再入門- オブジェクト指向 その2

アクセサメソッド - クラスのメンバ変数にアクセスするset(値を与える)とget(値を得る)の対 - について。
クラスは、アクセサメソッドを使ってメンバ変数にアクセスするよう設計する。

PHPなオブジェクト指向入門 vol.2
-
/* 足し算するCalculateクラス */

class  Calculate {
  var $a;
  var $b;
  var $sum;
  var $error;

  // コンストラクタ - 初期化
  function __construct() {
    $this->a = 0;
    $this->b = 0;
    $this->sum = 0;
    $error  = array();
  }
 
  function set_a($a) {
    if (is_numeric($a)) {
      $this->a = intval($a);
    } else {
      $error[] = "$a is not Int.";
    }
  }

  function get_a() {
    return $this->a;
  }

  function set_b($b) {
    if (is_numeric($b)) {
      $this->b = intval($b);
    } else {
      $error[] = "$b is not Int.";
    }
  }

  function get_b() {
    return $this->b;
  }

  function Sum() {
    $this->sum = $this->a + $this->b;
  }

  function getSum() {
    return $this->sum;
  }

  // エラー関数
  function IsError(){
    if(count($this->error) > 0){
      return $this->error;
    }else{
      return FALSE;
    }
  }
}
  $obj = new Calcurate();
  $obj->set_a(10);
  $obj->set_a(5);
  if ($obj->IsError() == FALSE) {
    print $obj->getSum();
  } else {
    print_r($obj->error);
  }

setとかgetとか使ってアクセスする。値のバリデータ出来て良い。
$sum以外はprivateにして外からアクセスできないようにした方がいいかも。
間違ってたら教えてください。ごめんなさい。

ラベル: ,


2008年11月10日月曜日

 

if 文, switch 文を使わない条件分岐

if 文, switch 文を使わない条件分岐 - 真夜中のプログラミングTips

※脆弱性になる可能性が高いので注意

/* if 使う場合 */
$mode = htmlentities($_POST["mode"]);
if ($mode == "edit" ) {
  include('includes/edit_class.php');
  // 処理
} else if ($mode == "delete" ) {
  include('includes/delete_class.php');
}
/* if 使わない場合 */
$mode = htmlentities($_POST["mode"]);
include('includes/' . $mode . '_class.php');

PHP5以降での「__autoload」。

オブジェクトのオートローディング - PHP マニュアル

未定義のクラスやインターフェイスを使用しようとした時に 自動的にコールされる__autoload関数。必要なクラスを必要なタイミングで呼び出せる。

<?php
  function __autoload($class_name) {
    include_once $class_name . '.php';
  }
  $obj = new MyClass1();
  $obj2 = new MyClass2();
?>

関連

PHP5を試してみる - クラスファイルの自動読込み - Do You PHP?
PHP の autoload を使ってみる - てくめも@coop
__autoload() で クラス内のメソッドの外だし - ハタさんのブログ
autoloadのほうがrequire_onceよりも早い? - PHPの種 ブログ
なぜPHPのautoload()が早いのか - Apelog

ラベル: ,


 

PHP再入門- オブジェクト指向 その1

PHPなオブジェクト指向入門 vol.1 - 真夜中のプログラミングTips
プロシージャ指向の方も多いと思われるPHP4ユーザを対象
var とか this って何だ?
var $name;
var $id;

varで宣言されたこれらはメンバ変数(プロパティとも呼ばれる)というもので、ここで宣言した変数はクラス内のどこからでも $this->XXXという形($this->name$this->id)で取り出したり、値を変えたりすることができる。

$this->~ とは「このクラスで定義した~」という意味
/* テストクラス */
class test {
  var $name;
  var $id;
  function __construct($tall, $weight){ //コンストラクタ
    $this->tall = $tall;
    $this->weight = $weight;
  }
  function display(){
    print "name:".$this->name.",id:"$this->id;
  }
}
$obj = new test("John","1");
echo $obj->name;
  // John
echo $obj->id;
  // 1
echo $obj->display();
  // name:John,id:1

問題ない部分。

関連

PHP再入門- オブジェクト指向 ~クラス - さぼてん(2008年11月5日記事)

ラベル: ,


 

PHP再入門- オブジェクト指向 その0

PHPなオブジェクト指向入門 vol.0 - 真夜中のプログラミングTips
~(前略)~説明は読んだけどよくわからなかった、知識にはなったが実用上は結局関数ばっかりという方を対象にしています。
また、オブジェクト指向と言っていますが、その概念とか小難しいことではなく、とりあえずクラスでコーディングできるようになることだけを目的とします。

知識にはなったが実用上は結局関数ばっかりという方
俺だ、俺。

(1) オブジェクトと関数の本質的な違いと使い分け
コーディング上の本質的な違いは「変数を保持できるか否か」に尽きます!

オブジェクトでは変数を保持でき、自由に取得できるように設計できる。関数は引数を与えて、returnでひとつ返すたくさん変数を取得したい場合は配列を返す。
複雑化した配列を返すかもしれない。また、引数をたくさん関数に渡すのもスマートではない。
オブジェクトでsetgetすれば必要な処理の直前で出来るからソースを追うのが楽になるような気がする。

[※]関数に5を超えるような引数を渡す、関数内での多重グローバル変数宣言(global $var; だらけ)は可読性、保守性を著しく低下させるだけでなく、意図しない動作の原因となります。
(2) オブジェクト指向のメリット

そもそも関数型の限界を解消するために生まれたこともあり、メリットを挙げればキリがないのでしょうが、

(3) オブジェクトのデメリット

しかし、実際上は一度に何百人がアクセスするようなサイトでない限り全く問題ないです

こういうのはPHP最適化Tipsとかに良く出てくる話だ。

個人的には、PHPで大人数の大規模開発をする機会がないから差し迫って導入する必要がないのも広がらない原因かと。
自分が導入できないのは設計ができないから。

ラベル: ,


2008年11月5日水曜日

 

PHP再入門- オブジェクト指向 ~クラス

クラスとは

クラスは設計図と表現されることが多い。よくある例は車の設計図。それにしたがって出来た部品がインスタンス。インスタンスは実体。

/* クラスの定義 */
class testClass{
  // クラス変数 - 個々の実体(インスタンス)に共通して保持される変数
  private static $classVar = 0;
  // インスタンス変数 - 個々の実体(インスタンス)ごとの変数
  private $instanceVar;

  // コンストラクタ
  public function __construct() {
     // new test Class すると(インタスタンス生成)実行される処理
  }
  // クラスメソッド - 個々の実体(インスタンス)をまたいだ処理
  public static function classMethod() {
     // 処理;
  }
  // インスタンスメソッド - 実体(インスタンス)から呼び出す処理
  public function instanceMethod() {
     // 処理;
  }
}
/* クラスからインスタンス作成 */
testClass::classMethod(); // インスタンスがなくても呼び出せる
$obj = new testClass(); // インスタンス作成 - コンストラクタ実行
$obj->instanceVar;
$obj->instanceMethod();

ラベル: ,


 

PHP再入門 - オブジェクト指向[メモ]

PHP クラス定義 - スタートアップ研修記
株式会社ディノの新人研修情報。→最初の投稿
クラスとオブジェクト (PHP 5) - PHP マニュアル
ついでに名前空間例外(exceptions)
この辺が一つの壁かもしれない。
オブジェクト指向入門 - PHP&MySQL開発日誌
クラスとは何か
クラスの定義 - phpbook
簡単な説明。短くて読みやすい。
PHP5 のオブジェクト指向 - Stackasterisk
2003年の記事。
Part 2 Zend Engine 2 - ITmedia エンタープライズ
「実践! 最新PHP 5」のPart 2では、PHP 5のコアであるZend Engine 2の導入で拡張・修正された機能について解説する。サンプルスクリプトを参照しながら、PHP 5ならではのオブジェクト指向プログラミングを理解していただきたい。
2004年の記事。
PHPでOOP
1. OOP用語 2. PHPのOOP構文 3. UML 4. デザインパターン 5. MVCフレームワークについて
サンプル
掲示板を作ってみる
入力フォームを作ってみる
フレームワークを作ってみる
オブジェクト指向開発〜設計・実装その1 - KoshigoeBLOG
純粋にオブジェクト指向プログラミングに関して、設計方法とか方針とか。

もっとオブジェクト指向での実際の設計例みたいなのが欲しかった。

プログラミングを初めて、ぶつかるのはシステムの設計だ。DBの設計も含め、どういう処理にするかどういう機能を作ってまとめるか。きっと優秀な人はこういうアルゴリズム化に差があるんだろうな。
大きなところにいて、SEがいたりPMがいたり研修をやってくれれば経験を積む事もできるけど、小さいところはそうは行かないだろうな。

ラベル: , ,


2008年11月2日日曜日

 

PHPフレイムワーク - rhaco メモ

rhaco.org
rhaco-users.jp
日本の rhaco ユーザのためのいろいろ
document/rhaco/まるごとrhaco! - riaf-ja
rhacoアプリ開発日誌
rhacoのインストールに挑戦 - Jamz (Tech)
rhacoで簡単な掲示板を作ってみる - anatoo勉強記
rhacoのSimpleTagを試してみました- せつないぶろぐ
2chまとめブログとかの画像をごにょごにょ - riaf-ja blog
rhacoでXMLパース - 株式会社RYUS
Rhacoを入れてみた。 - planet-ape
rhacoの外部ライブラリであるYouTubeAPI.php
rhacoでTwitterのBOTを作るチュートリアル - ふわふわな毎日
PHPでTwitterのBotを作ってみる - yuyarinの日記
dBug.phpをrhaco用に改造 - rhacoに関するメモ
rhaco のライブラリを試してみる - Heavens hell
PHPでDocTest - ウノウラボ Unoh Labs
Lingrのログをシンプルに表示してみた。 - gounx2の日記
template - <ふわふわな毎日/cite>
rhacoのテンプレートエンジンだけ利用する方法 - WebProgを極めて居酒屋を開発する
symfonyでrhacoのテンプレートエンジンを使うプラグイン - ふわふわな毎日
HTMLをスクレイピングして解析(パース)する- 無限遠の子供たち
SimpleTagでスクレイピング - rhacoに関するメモ
PHPでさくっとスクレイピングしたい。SimpleScrape - gounx2の日記
SimpleXmlとSimpleTag比較:twitterのhomeをスクレイピングしてみた。 - gounx2の日記
PHPでさくっとスクレイピングしたい。SimpleScrape - gounx2の日記
rhacoとか触ってみた 既存DBからproject.xmlのdatabaseセクションを作成するバッチ - maru.cc@はてな

ラベル: , ,


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google