今日はコワーキングスペース恵比寿プレオープンの日。夜はSuin先生によるXoopsモジュール開発勉強会を恵比寿で行った。まずは、Suin先生から”XOOPSモジュール開発の入門の心得”の説明があった。下記はそのコピー。
XOOPSモジュール開発の入門の心得
1. ドキュメントは無いからソースコードを読もう
2. 他のモジュールからコードをパクろう
3. 他のモジュールを改造してみよう今からPHPを始める人 -情報の集め方-
・PHPには優れた関数マニュアルがあります。 http://jp.php.net/manual/ja/
・やりたいことから関数を探すには『PHP ポケットリファレンス』
・PHPを体系的に学びたいなら『パーフェクトPHP』今からPHPを始める人 -開発のヒント-
・var_dump($variable); → echoは文字列だけ。
・改行コードはUNIX LF他の言語からPHPに来た人 -開発のヒント-
・PHPは配列が便利です。配列をいかに上手く使うかがカギ。
・PHPは関数をたくさん知っていれば知っているほど開発効率が上がります。
・PHPはバージョンが変わると、仕様が激変するので注意。(マイナーバージョンでも)XOOPSを開発仕様に設定しよう
・ローカルにXOOPS環境を構築
・デバッグモードON
・テンプレートの自動アップデートONPHPの書法
大文字小文字の使い分け
1. キャメルケース(camel case)
頭文字は小文字・単語の境界は大文字
xoopsCubeLegacy, iPhone, xpWiki2. パスカルケース(pascal case)
頭文字は大文字・単語の境界も大文字
XoopsCubeLegacy3. 大きいスネークケース(snake case)
大文字。単語の境界はアンダースコア
XOOPS_CUBE_LEGACY4. 小さいスネークケース(snake case)
小文字。単語の境界はアンダースコア
xoops_cube_legacy・変数: キャメルケース
・定数: 大きいスネークケース
・関数名: 小さいスネークケース
・クラス名: パスカルケース
・メソッド名: キャメルケース
・データベースのテーブル: 小さいスネークケース
今回の出席は3名。XAMPを入れ(私はMAMP)、local環境へXoopsホダ塾ディストリをインストールするところからスタートした。
が、ここで問題。
MAMPの新しいバージョンはMySQLのバージョンが5.5なので、データベースのTYPEが変わっているためにインストール時にエラーが起こる。なので、Install/mysql.struqture.sqlのファイルをエディタで開き、”TYPE=MyISAM”と表記されているところを”ENGINE=MyISAM”と一括置換してTYPEを変更する必要があるそうな。
あと、最新のMAMPはPHP5.3なので、環境設定から5.2へと変更する必要もある。
それらの作業により無事にlocal環境にXoopsホダ塾ディストリのインストールも成功。local環境へのインストールって、初心者にはなかなか敷居が高いものだとおもうが、それが普通にこなせるように自分がなったことに少し感動。でも、MySQLのTYPEの問題はsuinさんに教えてもらわなければ解決できなかったのだが....。
その後、suinさんからnoneモジュールが配布され、XoopsCubeモジュールの基本の説明を受ける。今まではXoopsのモジュールを自分がつくるなんて想像だにできなかったが、suinさんの説明はとてもわかりやすく、自分でもできそうな感じ。試しに楽天APIの商品検索のPHPを埋め込んだら、無事に動いたのでここら辺のモジュールを自分でもつくることができそうだ。さて、どんなモジュールにしよう。
それにしても、XoopsCubeサタデーラボに初めて参加したのは確か去年の今頃だったから、この1年でかなり成長したと自分なりに思う。かつて理解できなかったことやつくれなかったモノが、今となっては一人で解決できることが増えた。これはとてもうれしい。その分、新たに学ばねばならないことが山のように出てきたのだが、その山があること自体もうれしかったりする。
40近くになってからプログラミングの勉強をするのは遅すぎると思っていたが、遅いけど”遅すぎる”ということはないということを認識した。むしろ、この楽しさを知らずに人生を過ごすことがもったいないと思う。(私の価値観)
ということで、ここから下はメモ
php は、最後に ”?>” を書かないことが多い。なぜならば、閉じた後はHTMLなので、意図しない改行が入ってしまう場合があるから。
Smartyのコメントは、 <{* *}>
MAMPでエラーがおこったら、MAMPのLogフォルダにあるphp_error_logをチェックする。