先日Services_Shitarabaを1.0.3から1.0.4にバージョンアップしました。
といってもほぼ内部的変更だけで、これまでのソースとはほぼ互換性があります。
もし1.0.3までを利用していた場合、一箇所だけ修正が必要です。
コンストラクタをファクトリメソッドに変更してください。
それ以外は全く同じに使えるはずです。
new Services_Shitaraba($bbsGenre, $bbsNum, $bbsPassword);
↓
Services_Shitaraba::factory($bbsGenre, $bbsNum, $bbsPassword);
修正内容。
・奇妙な作りだったのを素直な感じに修正
・ファクトリメソッドと抽象クラスでしたらば以外のBBSにも対応
中身は誰かが書いてくれるにちがいない。
・ホスト名で削除機能を実現
管理画面のHTMLをパースするためにtidyを使用しています。
すぐに動作できるサンプルソースを用意しました。
http://blog.cnobi.jp/v1/blog/user/8f14c19eb01af9c2e80c7f2ad07dc8ca/1307544614
config.phpに設定を書けば動作するはずです。
Smartyのパーミッションとかは自分で調べてください。
中は物凄い適当なのであまり見ないでください。
以下の機能があります。
・1000行ったスレを削除
・NGワードで削除
・ホスト名で削除
したらばBBSの管理画面では面倒な、一括削除を簡単に行うことに特化しています。
しかし昔のソースを見ていたら色々ツッコミどころが多いですね。
setGerneってなんだよ。
今回のも本当はスレッド単位、レス単位でクラス化して楽に扱いたいとかそもそも命名をやりなおしたいとかあったんですが、面倒だったのでそのままです。
ていうか今のソースもServices_Bloggingからコピペした跡とか残ってるしこれはひどい。
といってもほぼ内部的変更だけで、これまでのソースとはほぼ互換性があります。
もし1.0.3までを利用していた場合、一箇所だけ修正が必要です。
コンストラクタをファクトリメソッドに変更してください。
それ以外は全く同じに使えるはずです。
new Services_Shitaraba($bbsGenre, $bbsNum, $bbsPassword);
↓
Services_Shitaraba::factory($bbsGenre, $bbsNum, $bbsPassword);
修正内容。
・奇妙な作りだったのを素直な感じに修正
・ファクトリメソッドと抽象クラスでしたらば以外のBBSにも対応
中身は誰かが書いてくれるにちがいない。
・ホスト名で削除機能を実現
管理画面のHTMLをパースするためにtidyを使用しています。
すぐに動作できるサンプルソースを用意しました。
http://blog.cnobi.jp/v1/blog/user/8f14c19eb01af9c2e80c7f2ad07dc8ca/1307544614
config.phpに設定を書けば動作するはずです。
Smartyのパーミッションとかは自分で調べてください。
中は物凄い適当なのであまり見ないでください。
以下の機能があります。
・1000行ったスレを削除
・NGワードで削除
・ホスト名で削除
したらばBBSの管理画面では面倒な、一括削除を簡単に行うことに特化しています。
しかし昔のソースを見ていたら色々ツッコミどころが多いですね。
setGerneってなんだよ。
今回のも本当はスレッド単位、レス単位でクラス化して楽に扱いたいとかそもそも命名をやりなおしたいとかあったんですが、面倒だったのでそのままです。
ていうか今のソースもServices_Bloggingからコピペした跡とか残ってるしこれはひどい。
PR
トラックバック
トラックバックURL:
コメント
よもやこれを使ってる人が実在しているとは…
エラーの原因ですが、
・抽象クラスのメソッドと実装クラスのメソッドの引数が違うという潜在的E_STRICTエラーがあった(今気付いた)
・PHP5.4でE_STRICTがE_ALLに含まれるようになったのでエラーが表に出てきた
http://php.net/manual/ja/function.error-reporting.php
http://php.net/manual/ja/language.oop5.abstract.php
ということで……5.2なのか、これはわかりませんね。
おそらくerror_reportingでE_STRICTエラーを検出するようになっているせいではないかと思われます。
とりあえず動かすなら、
スクリプトの頭に
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
とか書いておけば動くと思います。
根本的になおすには、
Services_Shitaraba_Model_Abstractの各abstractメソッドの引数を、
Services_Shitaraba_Model_Shitarabaと同じにしてください。
たぶんそれでなおります。
正直OpenPearのパスワードとか覚えてないのでなおせるかどうか微妙ですが、気が向いたら修正します。
エラーの原因ですが、
・抽象クラスのメソッドと実装クラスのメソッドの引数が違うという潜在的E_STRICTエラーがあった(今気付いた)
・PHP5.4でE_STRICTがE_ALLに含まれるようになったのでエラーが表に出てきた
http://php.net/manual/ja/function.error-reporting.php
http://php.net/manual/ja/language.oop5.abstract.php
ということで……5.2なのか、これはわかりませんね。
おそらくerror_reportingでE_STRICTエラーを検出するようになっているせいではないかと思われます。
とりあえず動かすなら、
スクリプトの頭に
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
とか書いておけば動くと思います。
根本的になおすには、
Services_Shitaraba_Model_Abstractの各abstractメソッドの引数を、
Services_Shitaraba_Model_Shitarabaと同じにしてください。
たぶんそれでなおります。
正直OpenPearのパスワードとか覚えてないのでなおせるかどうか微妙ですが、気が向いたら修正します。
さっそくの返信ありがとうございます。
Services_Shitarabaはしたらば総合6位の掲示板で大活躍中です。
ご指摘どおりabstractメソッドの引数修正を行ったところ
declare fatalはでなくなりましたが
1.0.3と同じようにCookie.phpが延々Noticeを出すようになりました。
実際の過去ログ送り操作も行えてないようです。
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
zend側っぽいのでもう少し悩んでみます・・・。
Services_Shitarabaはしたらば総合6位の掲示板で大活躍中です。
ご指摘どおりabstractメソッドの引数修正を行ったところ
declare fatalはでなくなりましたが
1.0.3と同じようにCookie.phpが延々Noticeを出すようになりました。
実際の過去ログ送り操作も行えてないようです。
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
PHP Notice: Array to string conversion in /usr/share/pear/Zend/Http/Cookie.php on line 285
zend側っぽいのでもう少し悩んでみます・・・。
いつのまにか1.0.3がzendのcookieエラーとかいって
動かなくなってしまったのでpear installで1.0.4にしたのですが、
こんどはDeclareエラーとかいって止まってしまうようになりました。
phpはさっぱりでservices_shitarabaの内部っぽいかんじもするのですが、どこ直したらよいでしょうか。
PHP Fatal error: Declaration of Services_Shitaraba_Model_Shitaraba::setGenre() must be compatible with that of Services_Shitaraba_Model_Abstract::setGenre(
) in /usr/share/pear/Services/Shitaraba/Model/Shitaraba.php on line 10
ソースはサンプルそのままです。
factoryにはしてます。
---
<?php
require_once('Services/Shitaraba.php');
$shitaraba=Services_Shitaraba::factory('game','7135','xxxx');
$ret=$shitaraba->datThread(
$shitaraba->getDatThreadList()
);
---
# php -v
PHP 5.2.16 (cli) (built: Dec 17 2010 14:09:03)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
# pear list
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.3.10 stable
Console_Getopt 1.3.1 stable
PEAR 1.9.4 stable
Structures_Graph 1.0.4 stable
XML_RPC 1.5.1 stable
XML_Util 1.2.1 stable