しすてむ さんぽみち。

適当なしすてむ紹介など。ようはくだらないBlog(´▽`)

【PHP】ヒアドキュメントの便利な使い方

2010-11-09 14:50:25 | PHP
ヒアドキュメント超便利。大好き!><



大部分をテンプレート化したとしても、ソース内でタグ書きたいとかありますよね。
そんな時にヒアドキュメントが便利です。

echo なんかでやろうとすると


echo "<input type = \"hidden\" name = \"ahoaho\" value =\"".$ahoaho."\" />";


なんてやらないといけないですが、
ヒアドキュメントだったら


echo <<<EOF
<input type = "hidden" name = "ahoaho" value = "{$ahoaho}" />
EOF;


なんてかんじで出来ちゃいます。
まぁ、ダブルコーテーションじゃなくてシングルコーテーションでできるじゃんとか、
変数そのままかいても、表示されるよね?とかあるんですが、
たまーに、そこに問題が出るのでそういうとこで詰まりたくないですよね。
なので、便利なのです!><


ちなみにヒアドキュメントは変数にも格納することができます。


$tmp = <<<EOF
<input type = "hidden" name = "ahoaho" value = "{$ahoaho}" />
EOF;

echo $tmp;




超便利!><





そんなヒアドキュメントさんの新しい使い方を教わった。
ヒアドキュメント内で{}くくりをすることで、それが変数ということを明確にしているわけですが
関数だとこれが適用されません><

しかし!
クラス内のメソッド化することで、これが回避できるらしいのです。やっほーい!


class base{
function aho($baka){
return str_replace("天才","アホ",$baka);
}
}

$CB = new base();
$tmp = <<<EOF
{$CB -> aho("ぼくは天才!><")}
EOF;




こんなことができます。
たとえ悪かったかもしれないですが、関数がそのまま利用できるのって色々メリットあるですよ。
使い道は探してみてくださいー。^^
































Twitterの書き込みに緯度、経度情報の埋め込み

2010-02-19 16:08:00 | PHP
タイトルの件を、このまえ必死に漁って処理してみたので一応ポストしておこー!
調べ方が悪かったのかもしれないけどね・・。

Twitter自体は、緯度、経度情報を含むデータがあった場合に特に表示しないのだけど、RSSには書き込まれています。

↓こんなかんじ
<georss:point>35.6288224 139.6846339</georss:point>

この情報は、確認した限りだとiphoneアプリのエコーフォンや、twitterクライアントのtwitdocなどでは参照していて、地図を表示してくれます。


ただ、twitterのつぶやき投稿からはこの位置情報は入れられないようで、APIを通すことで行えるようです。
普通のつぶやきで、地図表示を対応したい場合は「L:東京都渋谷区」のようなフォーマットがあるようです。
こちらは、緯度、経度に対応してるって情報も見たのですが対応していないようでした。
(そんな仕様に対応しているクライアントがなかった


というわけで、APIにて緯度、経度情報を挿入する方法について
twitterのAPIは、非常にシンプルですが細分化されているので、
公式の仕様書を参照するのが一番てっとりばやいかと思います。

http://usy.jp/twitter/index.php?Twitter%20API#y369b038
僕は英語が読んでると混乱してくるので、日本語訳見てます。(翻訳感謝><

つぶやきを行う部分は、「ステータス関連のAPI」のupdateが該当するようです。
渡し先はPOST(必須)で下記URLへ
http://api.twitter.com/1/statuses/update.format
(format は xml, json のうちのいずれかを指定)

この項の引数を見ていただければ、一目瞭然なのですが
・lat=緯度 (オプション) [将来、指定可能になる予定]
・long=経度 (オプション) [将来、指定可能になる予定]
の項目があります。
予定と書いてありますが、利用できました。


1つ失敗したのが、緯度がlatなので経度はlonだろうと思い込みして無駄に時間を過ごしました。
APIの利用の方法はいろいろあるかと思いますが、上記を指定することで、緯度経度の情報を引き渡すことができます。

今回、試したのは、PHPのpearにあるtwitterクラスです。
http://pear.php.net/package/Services_Twitter

このクラスの中で実際に、Twitterに対してつぶやき投稿のための通信を行う部分は、Twitter.php の setUpdateメソッドのようでした。

また、同メソッドの中で、投稿用のデータのパラメータの設定をしているのが
Twitter.php の _setDataメソッドのようでした。

このメソッドの第二パラメータに配列で、API仕様書にある引数を設定すると、その値が引き渡されるようです。
デフォルトだと"status"や"in_reply_to_status_id"の設定ができるのですが、それ以外は設定できなさそうでしたので、
この配列の中に"lat","long"を追加することでうまくいきました。

違うところで設定できるのかも?と思いましたが、そのあたりはおいおい調べていけたらなぁと思っています。

















PHPのちょいテク(という程でもない)

2009-06-22 15:26:33 | PHP
最近知ったPHPのちょっとしたテクニック。
ヒアドキュメントなんかに有効です。

ヒアドキュメントは変数もそのままかけるので便利なんですが
オブジェクトの変数とか、配列なんかが うまくいかなかったりします。



class test{
var $test;
function test(){
$this -> test = "a";
}
}
$test = new test();

print << aaaaiueo tetetest tetest $test -> test
EOF;


結果
aaaaiueo tetetest tetest Object id #1 -> test


でも、{}でくくると動作してくれます。



class test{
var $test;
function test(){
$this -> test = "a";
}
}
$test = new test();

print << aaaaiueo tetetest tetest {$test -> test}
EOF;


結果
aaaaiueo tetetest tetest a


配列だとパースエラーになる?
これ知る前は、一度代入したり 配列の場合は extract関数使ったりしていたけど
そういう無駄っぽい手間が省けるようになりました。

関数も同様に書けるといいんだけど、それはできないみたい。


かなり基本的な部分ではあるけれど、知ってると知らないでは大きな違いですなー。





Googleの検索結果の下のページのあれみたいなの

2008-10-22 22:36:42 | PHP
まぁ、日本語変ですよね。

画像用意するのもめんどくさいので、とりあえずぐぐって一番下みてみてください


アレです!!!


という あいかわらず 適当なわけなんですが、
あれを自分で作ってやろうとすると なんかしらないけどつまづいちゃったり
しちゃうんです。なかなか難儀なやつでして・・・・。


まぁ一回ちゃんとモジュール作っちゃえばいいのだろうけど
汎用性が利くものを作るのは中々大変!!!


という人のためなのか、同じ道を歩んだ人たちの蓄積の結果なのかは知りませんが
pearにPagerという この機能を簡単に利用できてしまうモジュールがあるようです。


もう作ってる時間がないんだよー!!><
って人は是非使うべきです!(使ったことないけど


http://www.phpbook.jp/pear/pear_pager/
こちらが、なかなかわかりやすかったと思います。


便利な世の中だなぁー。




pear苦戦

2005-07-11 14:21:54 | PHP
pearがなんとなくわかったので、調子にのってポコポコインストール
HTTP_Request を利用を目論んでみました

早速インストール しようとおもいましたが、

# pear install HTTP_Request
Package 'HTTP_Request' already installed, skipping


既にはいっていました (´ ▽`)

なので早速つかってみようとおもいました。


//簡単なリクエストテスト
	require_once "HTTP/Request.php"; 

//リクエスト取得
	$req =& new HTTP_Request("http://blog.goo.ne.jp/rumine/"); 
	
	print_r($req);

?>


サーバにあぷって早速アクセス。ワクワク感は覆されました。 Σ(´Д`lll)

Warning: main(Net/URL.php): failed to open stream: No such file or directory in /usr/share/php/HTTP/Request.php on line 48


むむ?なんか足りないらしい・・・。
これは,調べてもなんかわからん (;´д`)トホホ
試行錯誤の末、pearの依存性をチェキ。
どうやら HTTP_Request のインストール時に必要な Net_URL Net_Socketの 内の Net_URLがなぜか入ってなかったみたい。

なので Net_URLをインストール。

# pear install net_url
downloading Net_URL-1.0.14.tar ...
Starting to download Net_URL-1.0.14.tar (-1 bytes)
........done: 23,040 bytes
install ok: Net_URL 1.0.14


つまらない結果ですがサンプルソースは動くようになりました (´ ▽`) これ
とりあえず、ひとあんしん。

調子にのって他のサーバにインストールしてみようとしました。

#pear install HTTP_Request
downloading HTTP_Request-1.2.4.tgz ...
Starting to download HTTP_Request-1.2.4.tgz (13,212 bytes)
.....done: 13,212 bytes
requires package `Net_URL' >= 1.0.12
requires package `Net_Socket' >= 1.0.2
HTTP_Request: Dependencies failed


これはもうわかりますよ? モジュールが足りないっていってるんでしょ?(・∀・)ニヤニヤ

# pear install Net_URL
downloading Net_URL-1.0.14.tgz ...
Starting to download Net_URL-1.0.14.tgz (5,173 bytes)
.....done: 5,173 bytes
install ok: Net_URL 1.0.14


ほらね (´▽`) さて、Net_Socketも・・・

# pear install Net_Socket
Package 'Net_Socket' already installed, skipping


え?あるの!?  Σ(´Д`lll)

じゃぁ、はいるのかな・・・?

# pear install HTTP_Request
downloading HTTP_Request-1.2.4.tgz ...
Starting to download HTTP_Request-1.2.4.tgz (13,212 bytes)
.....done: 13,212 bytes
requires package `Net_Socket' >= 1.0.2


やっぱ、だめだにゃぁ (;´д`)トホホ
でも、よくみると

「`Net_Socket' >= 1.0.2」

あー、バージョンが古いということですか?|-`).。oO

# pear upgrade Net_Socket
downloading Net_Socket-1.0.6.tgz ...
Starting to download Net_Socket-1.0.6.tgz (4,623 bytes)
.....done: 4,623 bytes
upgrade ok: Net_Socket 1.0.6
# pear install HTTP_Request
downloading HTTP_Request-1.2.4.tgz ...
Starting to download HTTP_Request-1.2.4.tgz (13,212 bytes)
.....done: 13,212 bytes
install ok: HTTP_Request 1.2.4


ずばりでした (´▽`)
すこしずつ、慣れてきた感あり。でも、pear関連はもうちょっと掘って調べておかないとなぁ~


pear の インストール

2005-07-11 12:32:54 | PHP
phpのpearは便利なので利用してみようと思うものの
なんとなくうまくいかなかったり、モジュール毎のインストールがよくわからなかったので
やってなかったのですが、ふとしたキッカケでpear利用にリベンジちゃん。(´ ▽`)


キッカケはレッツphpを見ていて RSSティッカーなるものがあったので
どんな処理してるのかなぁ と調べようとしたところ XML_RSS というpearモジュールを利用している
というところから始まりました。

インストールコマンドがかいてあって、ただ単純に

#pear instal XML_RSS


とすればいいとだけ書いてあったので、打ってみたところ

 # pear install XML_RSS
 downloading XML_RSS-0.9.2.tgz ...
 ...done: 3,515 bytes
 requires package `XML_Tree'
 XML_RSS: Dependencies failed


あれ、ファール Σ(´Д`lll)

早速、「Dependencies failed pear」で googleで検索
こちらのサイトでヒントを得ました。

英語をちゃんと読めばわかったのかな?
ようは XML_Treeがないのでインストールできないよー ということらしい。なるほど。

原因がわかったので早速、XML_Treeをインストール

# pear install XML_Tree
downloading XML_Tree-1.1.tar ...
Starting to download XML_Tree-1.1.tar (-1 bytes)
........done: 23,552 bytes
install ok: XML_Tree 1.1


無事完了(´▽`)  続いて XML_RSS


# pear install XML_RSS
downloading XML_RSS-0.9.2.tar ...
Starting to download XML_RSS-0.9.2.tar (-1 bytes)
.....done: 15,360 bytes
install ok: XML_RSS 0.9.2


無事完了 (´▽`) ホッ


助かったー!!
インターネットは便利ですナ ヽ(゜∀゜)メ(゜∀゜)メ(゜∀゜)ノホッヒョー!

参考ページは早速リンクに追加しよ~(・∀・)


参考ページ
http://wiki.0-24.jp/?%3APHP

PHP5 インストール体験

2005-06-28 16:37:28 | PHP
XML関連の処理で RSSについては magpieRss というとっても便利で処理が早い
スクリプトがあるのですが、Amazonなどで使っているDOM関連のはどうも
処理が遅そうなので、php5をいれて PHPにある新しいXML関数を利用してみようと思いました。

ということで、php5のメモ書きです。

================

簡単に環境を書くと、うちのサーバは linuxのRedhatさんです(7ぐらい?)

既存にあるphpのconfigureオプション(適当にインストールしました)が
'./configure' '--with-pgsql' '--with-mysql' '--with-apxs=/usr/local/apache/bin/apxs' '--enable-mbstring' '--enable-mbstr-enc-trans'

だったので同じのでとりあえずやってみよーと思ったら
configure: error: libxml2 version 2.5.10 or greater required.

調べてみたら、libxml2というのがない(または古い?)と怒られてるようなので
インストールを余儀なくされました (;´д`)トホホ

しかし、みるからにXML系の奴っぽいので これは処理速度期待大ですね(・∀・)

libxml2 の インストール
http://xmlsoft.org/sources/
から ソースファイルを取得(libxml2-sources-2.6.19.tar.gzを取得しました)

#su -
#cd /usr/local/src/
#wget http://xmlsoft.org/sources/libxml2-2.6.19.tar.gz

例にならって /usr/local/src/に ダウンロードした tar.gzファイルを展開

#tar -xzvf libxml2-2.6.19.tar.gz

libxml2-2.6.19 というディレクトリができます。

#cd libxml2-2.6.19

特に設定は不要ということなので、普通にインストールしました。

#./configure ; make ; make install;

改めて、PHP5のインストールです。
こっちも /usr/local/src でやりました。

取得バージョンは 5.04 でした。

#cd /usr/local/src/
#wget http://jp.php.net/get/php-5.0.4.tar.gz/from/this/mirror
#tar -xzvf php-5.0.4.tar.gz
#cd php-5.0.4
#./configure' '--with-pgsql' '--with-mysql' '--with-apxs=/usr/local/apache/bin/apxs' '--enable-mbstring' '--enable-mbstr-enc-trans'
#make;make install

スムーズにインストールは完了しました(・∀・)ヤッター!

後は、apacheのhttpd.confを確認して php4モジュールを動かなくしときました(念のため)

以上、PHPメモでした (´▽`)