サンプル集・レシピ集で個人開発のヒントをもらう【PHP】

サンプル集・レシピ集を手に取り、開発のヒントになるものを探しました。

MVCモデルを軸に、基本的な機能であるCRUDを搭載するのが最低限やることです。

MVCモデルはシステム処理の中心となる「Model」、画面表示や入出力を行う「View」、ユーザからの入力情報を受け取って、その内容に応じて Model と View を制御する「Controller」のことです。

とは、データを「作成」、「呼び出し」、「更新」、「削除」という基本機能のことです。

参考になった事例を見ていきましょう。

Googleの各サービスを利用する

Google APIs Client Library for PHPを使います。(for Javascriptもあります。)

2018年6月からGoogleMapsPlatformを使うには、Googleアカウントを持つとともに、APIキーの取得が必須となりました。以前は、地図は共有タグを埋め込めば、表示されて利用できていました。また、キーの利用には、料金が発生しますが、月間200ドルまでは無料です。ご自分のウェブサイトに地図を埋め込む程度なら、請求は発生しません。

Googleブックスから書籍の情報を取得する

Google APIs Client Library for PHPから、Books APIを利用します。書籍情報検索など、詳細な情報を検索できます

ISBNコードから書籍情報を取得して、自サイトで書籍の紹介もできます。

Googleの各種APIやYouTubeAPIを利用する

ZendGdataは、Googleが提供するサービスのAPIにアクセスできるライブラリです。

ソーシャルメディア(SNS)のOAuth認証を利用する

HybirdAuthは、X(旧Twitter)やFacebookなど、30種類超のSNSのOAuth認証を行うライブラリです。引数の指定だけでOAuth認証ができます。

Amazonの商品データベースにアクセスする

サービスAmazonは、Amazonが提供している商品リンクを作成するライブラリです。Amazon Product Advertising APIをPHPを使って利用することができます。

商品検索ファイル↓

require_once 'Services/Amazon.php';
$config = array(
'key' => 'AWS_ACCESS_KEY',
'secret' => 'AWS_SECRET_KEY',
'track_id => 'ASSOCIATES_TRACK_ID'
);
$amazon = new Services_Amazon($config['key'], $config['secret'], $config['track_id']);
$amazon->setLocale('JP');

$options = array(
'MinimumPrice' => '1500',
'MaximumPrice' => '3000',
'keywords' => '母の日';
'Sort' => 'salesrank',
'ResponseGroup' => 'ItemIds, ItemAttributes, Images'
);
$result = $amazon->ItemSearch('Present', $options);

if(!PEAR::isError($result)){
print sprintf('<h4>%s 件見つかりました</h4>', $result['TotalResults']);
$max = min($result['TotalResults'], 3);
for($i=0; $i<$max; $i++){
print "<div>";
$item = $result['Item'][$i];
$attrs = $item['ItemAttributes'];
$id = $item['ASIN'];
print sprintf('<h3>(%s) : %s</h3>', htmlspecialchars($attrs['Binding']),
htmlspecialchars($attrs['Title']));
print sprintf('<a href="lookup.php?id=%s"><img src="%s"></a>, $id,
$item['MediumImage']['URL'];
print sprintf('<p>%s</p>', join("<br />", $attrs['Feature']));
print sprintf('<p>%s</a>', $attrs['ListPrice']['FormattedPrice']);
print '<div>';
}
} 

商品IDでの情報取得

require_once 'Services/Amazon.php';
$amazon = new Servises_Amazon($config['key'], $config['secret'], $config['track_id']);
$amazon->setLocale('JP');

$options = array('ResponseGroup' => 'ItemAttributes,Images');
$id = isset($_GET['id']? $_GET['id'] : '4774156117';
$result = $amazon->ItemLookup($id, $options);

if(!PEAR::isError($result)){
$item = $result['Item'][0];
print sprintf('<h4>%s</h4>', htmlspecialchars($item['Item['ItemAttribures']['Title']));
print sprintf('<a href="%s">詳細へ</a><br />', $item['DetailPageURL']);
print sprintf('<img src="%s" style="float: left">7, $item['MediumImage']['URL']);
print '<div style="float:left; padding-left: 1em">';
foreach($item['ItemLinks'] as $links){
foreach($links as $link){
print sprintf('<a href="%s">%s</a><br />', $link['URL'], $link['Description']);
}
}
print "</div>";
}

かんたんにWebAPIにアクセスする

Guzzleは、HTTPクライアントを実現するアプリです。

webサイトだけではなく、X(旧Twitter)APIなど認証を必要とするサイトにもアクセスすることができます。

Webスクレイピングを行う

Goutteは、気軽にWebスクレイピングができるライブラリです。

スクレイピングは今、Pythonでやるのがはやっていますが、PHPで実行します。

MVCフレームワークを使って、アプリケーションを作成する

インストールは、composerを使うのが一般的です。

そして、アプリケーションのひな型を作ります。

フレームワークの概要

CakePHPはディレクトリに合わせてそれぞれのプログラムを配置するだけで機能します。

コントローラとは、URLでアクセスしたときに起動するプログラムです。

よって、アクセスしたいURLに合わせてコントローラクラスを配置するだけで、動作します。

コントローラの実装

下は、コントローラを実装したコードです。

最初に、AppControllerクラスを継承します。そして、使用するモデルを宣言します。アクションはpublicメソッドそして定義すると、自動的にアクションとして認識されます。したがって、アクションとしたくないメソッドはpublicメソッド以外で定義する必要があります。

class InfoController extends AppController{
pablic $uses = array('Info');
public function index(){
$list = $this->Info->find('all');
$this->set('list, $list)+
$this->render('add');
}
public function add(){
if(!$this->request->is('post')){
$this->render('add');
return;
}
$data = array(
'Info' => array(
'title' => $this->request->data('title'),
'body' => $this->request->data('body')
)
);
$this->Info->save($data);
$this->Session->setFlash("追加しました");
$this->redirect('/info/index');
}
public function del($id){
$this->Info->delete($id){
$this->Session->setFlash("削除しました");
$this->redirect('/info/index');
}
}

表示するビューを指定する場合には、renderメソッドを使います。

新規追加のアクションは、画面遷移時のGETメソッドとPOSTメソッドで表示されます。

よって、requestオブジェクトのisメソッドを使って、HTTPのメソッド毎に処理を切り分けます。

この時、登録メッセージを遷移先に表示するには、SessionヘルパのsetFlashメソッドにメッセージを設定します。

にほんブログ村 IT技術ブログへ
にほんブログ村

コメント

タイトルとURLをコピーしました