wiki:pne-book-9-note
 ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Version 3 (modified by tejimaa, 12 years ago) (diff)

--

開発ツールの使い方

http://sc.pne.jp/200801261138.png

コードフロー

TRAC

SVN

OpenPNE構造

※カスタマイズの方法は説明しない

小窓の作り方

技術解説

ディレクトリツアー

OpenPNEのディレクトリ構造と役割 OpenPNEの現在2.0系では独自のフレームワークを採用しています。 よってディレクトリ構造も独自の構成をしているので、主要な5つのディレクトリについて見ていきたいと思います。

  • binディレクトリについて
    • binにはWEBブラウザ以外から呼ばれるプログラムが入っています。
    • 通常PHPというのは、WEBブラウザからアクセスされて、PHPで処理してWEBブラウザに返事をする形ですが、このbinにはLINUXのシステムであるCRONや、メールサーバなど、WEBブラウザ以外から呼ばれるファイルがあります。
    • binの中には2種類のファイルタイプがあります。一つ目はPHP、もう一つはcronです。このcronというファイルは同じファイル名のPHPと対になって存在している。
    • もう一つは、携帯の写メール投稿や、プロフィール画像の変更などの処理をするPHPファイルです。どのファイルもconfig.inc.phpをrequire_onceで呼んでいます。
      require_once './config.inc.php';
      
    • このconfig.inc.phpの中身見て見ると、config.phpを呼ぶ処理が書いています。config.phpには、SNSのサーバー管理設定、パス設定などがあります。
      <?php
      /**
       * @copyright 2005-2007 OpenPNE Project
       * @license   http://www.php.net/license/3_01.txt PHP License 3.01
       */
      
      define('OPENPNE_DIR', realpath('../'));
      require_once OPENPNE_DIR . '/config.php';
      
      ?>
      
    • mail.phpというPHPファイルを見ていきます。まず、config.inc.phpやinit.incなど必要なものを読み込む。その後にライブラリを読み込みます。
    • 次に、受信したメールを読み込みます。
      // 標準入力からメールデータの読み込み
      $stdin = fopen('php://stdin', 'rb');
      $raw_mail = '';
      do {
          $data = fread($stdin, 8192);
          if (strlen($data) == 0) {
              break;
          }
          $raw_mail .= $data;
      } while(true);
      fclose($stdin);
      
    • そして、m_process_mailの関数内で、誰から送信されたメールなのか?どこに宛てて送信したメールなのか?などを判断してそれぞれの処理を振り分けます。
    • 最後に、m_process_mail($raw_mail);ですべての処理をしています。
      // メールの処理
      m_process_mail($raw_mail);
      
    • このmail関数にはデバッグ用ログ保存もあり、同時にデバッグの処理をしています。
      // デバッグ用ログ保存
      m_debug_log(ob_get_contents(), PEAR_LOG_DEBUG);
      
      while (@ob_end_clean());
      

  • libディレクトリについて
    • libには主に、OpenPNEが利用する外部のライブラリがここにまとめています。
    • OpenPNEの外部ライブラリではほとんどがPEARですが、中にはSmartyなど他のライブラリもこのlibにまとめられています。
    • OpenPNEでは、この様にライブラリを同梱しているのでPEARを自由に扱うことが出来ないレンタルサーバでも対応できます。また、OpenPNEに同梱されているライブラリを使うことで、バージョンによる違いなどを考えなくても、処理が実行されるようになっています。
    • libにはPEARなどが入っているincludeディレクトリとsmarty_pluginsディレクトリがあります。
    • このsmarty_pluginsディレクトリにはOpenPNEにとってSmartyを便利に扱うプラグインが入っています。SmartyというのはPHPで書かれたテンプレートエンジンと呼ばれるもので、アプリケーションのロジックとコンテンツを分離して容易に管理するためのライブラリです。このSmartyを便利に使うためのプラグインがsmarty_pluginsディレクトリに入っています。

  • pubic_htmlディレクトリについて
  • varディレクトリについて
  • webappディレクトリについて 間違いやすいのが、webappの下にもlibがあるってことです。

webappの下にあるlibとは違いますので、ちょっと気をつけていただきたい。 webappの下にあるlibは、OpenPNEが作ったOpenPNEで利用するプラグインやライブラリになっています。

コードフロー

コードの読み方

テーブル表

小窓の作り方

モジュールを作る

新しいページの作り方

OpenPNE開発者、開発方法

ツールの紹介と使い方

Trac

SVN

Eclipse

開発環境(作業環境)

  • VMware
  • XAMPP

その他

  • ML
  • MindMAP

メモ
開発者の日常を記述しながら、ツールを紹介する