先日開催された【楽天・ヤフー・リクルート3社共催】第1回アフィリエイトソンでつくった、新入生.comというサイトについて。
日々、改良を重ねているんだけど、機能を増やしていけば増やしていくほどカオスになっていき、このままでは絶対にダメだとおもって、今まで逃げていたPHPのclassを今回は導入することに決めました。
classについては、以前@yandoさんが下北沢オープンソースカフェで開いていくれた「8時間耐久 PHP Classの教室」のスライドがわかりやすかった(けど、ものにできなかった)ので、それでもう一度復習。
さらに、最近すごーくおせわになっているドットインストールでも、PHP(応用編)に「クラスを使ってみよう」というレッスンがあったので、これもチェック。
結果、ようやく今までいろんな人から何度も何度もきいていた、
”classは設計図”
という概念を理解することができました。
で、ホットペッパーBeatuyのクラスを書いてみました。
今回のサイトにつくっているいろんな関数も、class化したほうが良い物は変更していく予定です。
class RecruitApi { const API_KEY = 'APIキー'; const BEAUTY_URL = "http://webservice.recruit.co.jp/beauty/salon/v1"; public $lat; public $lng; public $count; public function __construct ( $lat, $lng, $count) { $this->lat = $lat; $this->lng = $lng; $this->count = $count; } public function getHot() { $url = self::BEAUTY_URL.'?lat='.$this->lat.'&lng='.$this->lng.'&count='.$this->count.'range=5&key='.self::API_KEY.'&format=json'; echo $url; } } $lat = '35.690241'; $lng = '139.700303'; $count = 5; $beauty = new RecruitApi ( $lat, $lng, $count ); echo $beauty->getHot();
この次に解決したいのは、WordPressの場合、get_headerやsidebar、footerとすると、関数のスコープが変わってしまうので、これをどうするかというところ。
例えば、headのtitleにAPIで取得した学校名を表示したいんだけど、同様に記事の中でもその学校名を表示したい。そうすると、header.phpと本体ファイルの両方からAPIを2回呼び出すことになっちゃうんだけど、それをなんとかできないかなぁと。