Mac OS XにPEARのインストール
Mac OS XにPEARのインストール – ぱんぴーまっしぐら
うまく行かなくなってたので。
$ curl -O http://pear.php.net/go-pear.phar $ php go-pear.phar
パイプでつなぐとreadlineがうまくいかないので別で実行。
ユーザー環境にインストールしようとするのでそのままEnter
~/pear/bin/pear help
Mac OS XにPEARのインストール – ぱんぴーまっしぐら
うまく行かなくなってたので。
$ curl -O http://pear.php.net/go-pear.phar $ php go-pear.phar
パイプでつなぐとreadlineがうまくいかないので別で実行。
ユーザー環境にインストールしようとするのでそのままEnter
~/pear/bin/pear help
curl http://pear.php.net/go-pear | sudo php
設定はこんな風にした。
1. Installation prefix ($prefix) : /Library/Php/Pear 2. Temporary files directory : $prefix/temp 3. Binaries directory : /usr/bin 4. PHP code directory ($php_dir) : $prefix/PEAR 5. Documentation base directory : $php_dir/docs 6. Data base directory : $php_dir/data 7. Tests base directory : $php_dir/tests
PHP5.3.3では以下のような「後方非互換の変更」が加えられています。
Methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn’t affect non-namespaced classes.
<?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method in PHP 5.3.3 } } ?>There is no impact on migration from 5.2.x because namespaces were only introduced in PHP 5.3.
PHP 5.3.3 Released!
どういう事かというと、
<?php
class A
{
function A()
{
echo __CLASS__;
}
}
class B extends A
{
}
class C extends B
{
function C()
{
parent::B();
}
}
new C();
結果
PHP5.3.2
PHP Fatal error: Call to undefined method B::B()
PHP5.3.3
A
PHP5.3.xによってPHP4に対する後方互換が崩れたんですが、PHP5.3.3でPHP5.3.x非互換となる代わりにPHP4後方互換が一部戻ったという話。
PEAR::Image_Graphで問題でてました。
PHP5の環境なら以下のように書くので問題は起こらないんですけどね。
<?php
class A
{
public function __construct()
{
echo __CLASS__;
}
}
class B extends A
{
}
class C extends B
{
public function __construct()
{
parent::__construct();
}
}
new C();
Services_Twitter_r302262.diff
7904 byte
[md5] 89930ad5cf340af7a101ed74261d4a34
修正
sendOAuthRequest()メソッドでHTTP_OAuth_Exceptionがthrowされる問題
serchメソッドでhttp://search.twitter.comを利用しない問題
blocks/createメソッドでuser_id、screen_nameを指定できない問題
blocks/destroyメソッドでuser_id、screen_nameを指定できない問題
テストでOAuthの場合sourceはアプリケーションになる問題
テストでutf8テストが二重投稿になる問題
テストでOAuthの場合オブジェクトがHTTP_OAuth_Consumer_Responseになる問題
追加
blocks/bloking/idsメソッド (call $t->blocks->blocking_ids())
$ svn export -r 302262 http://svn.php.net/repository/pear/packages/Services_Twitter/trunk Services_Twitter $ wget http://blog.cheki.net/Services_Twitter_r302262.diff $ cd Services_Twitter $ patch -p0 < ../services_twitter.diff patching file Services/Twitter.php patching file data/api.xml patching file tests/900-exceptions.phpt patching file tests/910-options.phpt patching file tests/920-utf8.phpt patching file tests/data/utf8-2.dat patching file tests/setup.php
Services_Twitter
以前パッチが取り込まれたけど、Basic認証でしか確認してなくて、OAuthだとDELETEメソッドで問題がでてました。
その他なんか迷走してる感じだったので、パッチ送りたいなとPEARアカウントを取得しようと申請したのですがレスポンスがないので、とりあえずgithubにぶち込んだ次第です。
バグレポートもパッチ投げるにもPEARアカウントないと半匿名な感じになるので。
cockok's Services_Twitter at master – GitHub
リリース最新は0.6.2ですが、trunkが変更されてたのでそちらをfork。
あいきゃんとすぴーくいんぐりっしゅ。
もちろん書くのも。
ちなみに、DELETEメソッドででる問題は、RFC2616に以下のようなところ。
The DELETE method requests that the origin server delete the resource identified by the Request-URI.
HTTP/1.1: Method Definitions
こっちはPEAR::HTTP_OAuthの問題。
Manual :: 共有ホストでの PEAR のローカルコピーのインストール
既にpearコマンドが利用可能な場合。
$ pear config-create /path/to ~/.pearrc
/path/to/pear以下に諸々配置される設定ファイルが~/.pearrcとして作成される。
この場合、PEARディレクトリは/path/to/pear/phpとなる。
ディレクトリ等、設定をを変更したい場合は、通常通りpear config-setコマンドで。
phpコマンドを実行する際にinclude_pathの設定をしたいが、オプションでは指定できないので、php.iniを別途準備し読むように指定するaliasを設定。
$ cp /etc/php.ini /path/to $ vim /path/to/php.ini $ alias php='php -c /path/to/php.ini'
php.iniのinclude_pathの設定は以下のようにローカルのPEARディレクトリしか読み込まない、または、優先的に読み込むように設定。
include_path = ".:/path/to/php" #include_path = ".:/path/to/php:/usr/share/pear:/usr/share/php"
Services_Twitter::sendOAuthRequestではHTTP_Request2_Exceptionをcatchしていますが、実際はHTTP_OAuth_Exceptionをcatchしなきゃいけない。
Services_Twitterはベーシック認証周りは大丈夫だと思いますが、OAuth周りはまともにテストされてないので、結構バグあります。
PHPでtwitterを利用する場合にはServices_Twitterが便利です。
このServices_Twitterですが、公式のPEAR公式と野良(?)版が存在します。
openpear版はさっき見つけたけど、ちょっと使う気になれないので選択肢としてはPEAR公式か悠希さん版。
環境がCentOS5系、PHP5.1系だったので、悠希さん版を検討したのですが、CodeReposに入れられてるもののほとんど更新されておらず、APIが増えてる現状を考えると作業量的に厳しいということでPEAR公式を利用することに。
Services_Twitter-0.1.0 betaがリリースされたので日本のと比較してみた – 肉とご飯と甘いもの @ sotarok
この頃と状況は結構変わっていて、json必須ではない(でも速度の関係でpeclのjsonを利用)、HTTP_Request2でsocket通信とかになっています。
結構珍しい造りになっていて、api群はdata/api.xmlで管理されています。
pearコマンドを利用せずに利用する人は注意が必要。