!PHP再入門 for AiSA
!!対象
-最近PHP書いてない
-なんとなくPHPが読める
-DB?
!!学べる技術
- PHPからのMySQL利用方法
- 簡単なPHPスクリプトの作り方
!!学べない技術
- スケールするWebアプリの書き方
- php,mysqlの環境構築
!!作業の順番
-サービス設計
-DB設計
-DBアクセサ作成
-ルータ作成
-テンプレ作成
-テンプレ結合
-サービスリリース
!!時間があれば全部やりたい
- C4SAでやってみよう 15日無料
!!サービス設計
掲示板つくろう
ログイン不要
!!DB設計
phpmyadminでさくっとつくる
id,text,update
があればいいでしょう
!!DBアクセサ作成
挿入と参照のみ
!!ルーター作成
がりがり
ifで分岐
!!テンプレさくせい
いつもの
!!テンプレ結合
まぜまぜ
!!C4SAで掲示板(ソースコード)
かんたんー
>> code php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>1lineBBS</title>
<?php
define('DB_NAME', getenv('C4SA_MYSQL_DB'));
define('DB_USER', getenv('C4SA_MYSQL_USER'));
define('DB_PASSWORD', getenv('C4SA_MYSQL_PASSWORD'));
define('DB_HOST', getenv('C4SA_MYSQL_HOST'));
$dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';charset=utf8;';
$db = new PDO($dsn,DB_USER,DB_PASSWORD);
function getAll(){
global $db;
$sth = $db->prepare('select * from board');
$sth->execute();
return $sth;
}
function insert($text){
global $db;
$sth = $db->prepare('insert board(text) values (?)');
$sth->execute(array($text));
}
if(isset($_POST['action'])){
$action = $_POST['action'];
if($action == 'insert'){
if(isset($_POST['text'])){
insert($_POST['text']);
echo "insert ok ". $_POST['text'];
echo '<a href="/">back</a>';
}
}
}else{
echo "<h1>1line bbs</h1>";
?>
<form method="post">
<input type="text" name="text" size=50>
<input type="hidden" name="action" value="insert">
<input type="submit" value="post">
</form>
<hr>
<?php
$items = getAll();
foreach($items as $item){
?>
<li><?php echo htmlspecialchars($item['text']); ?></li>
<?php
}
?>
<hr>
<?php } ?>
<hr>
AiSA
<<
!!このままではダメな理由
- 表示とロジックが分離できていない
-- メンテナンス性が著しく悪い
- ルータが複雑になるとむちゃくちゃになる
-- ex. このページからじゃないとココにはきちゃだめ
-- ex. ログインしていないとここにはアクセスできない
- 大事なコードが丸見えになる危険性がある
-- 世界がちゃんとしていれば問題になることはないが、、
- 入力チェックに漏れが生じやすい
-- 一貫した入力チェックの仕組みを
良い子は真似しないように
!!@kuidaoringさんがすばらしくスケーラブルに書き直してくれました
これはすばらしい!
RedBeanとSlimをつかってます。今風!
https://github.com/kuidaoring/aisa_board
5643382
wiki
1394292035