先日開催された【楽天・ヤフー・リクルート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回呼び出すことになっちゃうんだけど、それをなんとかできないかなぁと。
