@yandoさんのclassの教室とドットインストールで、ようやく「classは設計図」ということが理解できました。

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