夕べダラダラとTwitterを眺めていたら、Smartyとかデザイン・ロジックに関するPOSTを見かけたので、
気になったPOSTを、メモ代わりに載せてみる。
3年前まではSmarty超便利!とか思ってたけど、今は全然いらないと思ってる。
http://twitter.com/pasela/status/3408925414
私も最近は、なるべくSmartyを使っていくようにしています。 完全に分離して作業してる訳じゃないけどな
http://twitter.com/hitsug/status/3416010941
表示に関わる加工はmodifierでやる派なので、そういうのが書きやすいのはまぁいいかな。あとキャッシュの制御自前でやるのマンドクセとか。
http://twitter.com/pasela/status/3408991708
自分の中ではSmartyの便利さよりも不便さのほうが気になってきた感じ。
http://twitter.com/pasela/status/3409009137
素のPHPをテンプレートとして使うには、テンプレートとして使うファイルだけshort_open_tagを有効にしたいとか、sandboxをどう作るかとか、キャッシュをどう制御するかとか、それなりに考えないといけないのが面倒。今度暇見つけて考えてみるかな。
http://twitter.com/pasela/status/3409173172
@syo_sa1982 デザインとロジックを切り離すという幻想は何年か前に捨てたw
http://twitter.com/pasela/status/3409262014
まあ完全に切り離す事は出来んだろうなぁ・・・・。俺が無知なだけかも知れんけど、何かしら HTML に PHP のコード混ざるわけだし。
http://twitter.com/syo_sa1982/status/3409398036
@syo_sa1982 ロジックの分離がデザイナーのためなのか、ビジネスロジックの分散防止のためなのかで意味が異なってくるけど、前者については諦めた。
http://twitter.com/pasela/status/3409415718
@pasela あれ?もしかして需要あるかな?デザインファイルの直前に、ロジックファイル置いてるから、PHPさえできればかなり直感的に扱えるようになってるんですよね。デザイナーには最低HTMLの知識は必要かもだけど。
http://twitter.com/aulta/status/3409442879
ロジックと言ってもビジネスロジックと ビューのロジックは別のもので、ビジネスロジックがビューに混入するのは問題外だけど、ビューのロジックがビジネスロジックに混じってるのもダメというの が俺の考え。例えば日付をどう見せるかとか、数字を3桁カンマ区切りにするとかは表示のためのロジック。
http://twitter.com/pasela/status/3409489776
@syo_sa1982 Smartyとか使ったところでデザイナーにしてみれば、なにこのファイルってなるし、せっかくPHP覚えたのにまだ覚えるのかよ!みたいになるしw
http://twitter.com/pasela/status/3409585171
@pasela うーん。。ビューの中で制御が入るのは?Smartyでも .tplのなかで、ifやループが多用されるよね。こういうのはロジック側で処理しておくべきだと思う。
http://twitter.com/aulta/status/3409609140
@aulta 自分の中ではテンプレート=ビューではなく、ビューの一部がテンプレートです。なので条件分岐などが必要ならビューの中で処理するという考えは変わりません。
http://twitter.com/pasela/status/3409696997
@aulta しかしどれだけ理想を掲げたところで、実際にはテンプレート上に条件分岐やループ書いた方がどう見ても簡潔だろ、ってのがあるのは事実かなぁとw
http://twitter.com/pasela/status/3409738613
@pasela なんかその辺の、PCリソースがどうってことなら、昔は速度を追及したこともあったけどもういいかな。と思い始めてる。テンプレ内に制御が必要(というか書く方が簡潔)という考えになってしまうのは、どのフレームワークも完成されてないからだと思うよ。
http://twitter.com/aulta/status/3409824738
たぶんさっきのロジックの話と同じで、テンプレート上の制御構造についても区別が必要なんだろうなぁ。制御構造がまったくないテンプレートエンジンを使ったことがあるけど、それはそれで見通しの悪いものになった覚えがある。
http://twitter.com/pasela/status/3409995698
「値がなかったらデフォルトを表示す る」程度なら排除できるけど、「その部分にメッセージブロックなどを表示する」ぐらいになると、どうするのがベストなのか未だによくわからない。そこに出 すもの丸々変数にするのはいただけないし、やっぱブロックごとにパーツ化して組み合わせるのがいいのかなぁ。
http://twitter.com/pasela/status/3410066495
テンプレートから制御構造を排除したことで、ホスト言語にHTML(の断片)を書く羽目になるなんてのは本末転倒だと思うので、やっぱりページ中の一部が変わるような制御をどうするかがカギなのかなぁ。
http://twitter.com/pasela/status/3410199734
・・・・と、まあSmartyに関するPOSTはこんな感じ。
纏め切れてない感満載ですね。や、単純にふぁぼったPOST載せただけだけども。
個人的には、当初はデザイナーとの分業を目的としてSmartyを使い始めたのもあるけど、
その辺はほとんど諦めかけてるので、上に書いてあった、「ビジネスロジックの分散防止」を意識して行こうかなと。
・・・てことはフレームワークを勉強するとかそういう話になってくるのかな。
だとしたら、今は分業目的以外でも便利なので、Smarty使い続けつつ、
何かしら、フレームワーク(例えばCakePHPとか)を勉強して、必要に応じてSmarty使うかどうか決めると言うのが良いのかも。
まあ何にせよ、「Smarty使ってて便利だけど、実際どうよ?」って思うところはあったので、この手のPOSTは非常にありがたいです、ハイ。
MySQLi拡張サポート
http://jp2.php.net/manual/ja/book.mysqli.php
PHP5から新たに使える機能で、オブジェクトAPIでMySQL制御できるとの事。
・・・んー、要するにMySQLiというクラスが最初から定義されてるということかね?
<?php
//通常のMySQL関数
$MySQL =mysql_connect( "localhost", "root", "", "testdb" );
$Result = mysql_query( $MySQL, "select no1, no2 from hoge order by no1" );
if( mysql_error( $MySQL ) != "" ){ die( mysql_error( $MySQL ) ); }
while( $Array = mysql_fetch_array( $Result ) )
{
print_r( $Array );
}
?>
<?php
//mysql拡張サポートで書き換えた場合
$MySQL = new mysqli( "localhost", "root", "", "testdb" );
$Result = $MySQL ->query( "select no1, no2 from hoge order by no1" );
if( $MySQL -> error != "" ){ die ( $MySQL -> error ); }
while( $Array = $Result -> fetch_assoc ( ) )
{
print_r( $Array );
}
?>
ここまでの疑問点
- 上でも書いたけど、これは最初から定義されているクラスのようなもの?
- MySQLi拡張使うメリットとは?
プリペアドクエリとバインド変数
クエリを二段階に分けて実行する手法。
引数のみ異なる同一のクエリを複数回行う時に構文解析が一回で済むので、実行効率の向上が期待できる。
・・・こっちはそれとなく理屈はわかる・・・かも。
<?php
//プリペアドクエリ&バインド変数の例文
include( "child.inc" );
try{
$ChildMySQLi = new ChildMySQLi ( "localhost", "root", "", "testdb" );
$SecltStmt = $ChildMySQLi->prepare( "select no1, no2 from hoge where no1 < ? order by no1" );
$SecltStmt->bind_param( "i", $wNo1 );
$wNo1 = 5;
ChildStmt::execute( $ChildMySQLi,$SecltStmt );
$SecltStmt->bind_result( $No1, $No2 );
while( $SecltStmt->fetch() ){
echo "-------------------\n".
"no1 = ".$No1."\n".
"no2 = ".$No2."\n\n";
}
} catch( Exception $Exception ){
print_r( $Exception->getMessage()."\n" );
}
?>
数週間後に続く
机の上にごちゃごちゃ物を置いているやつは総じて能力のないプログラマー
・・・だそうです。ごめんなさいごめんなさい。机どころか部屋も(ryでごめんなさい。
抜粋
<?php
$m="ごめんなさい";
for($i=0;$i<=5;$i++){if($i==5){echo "本当に";}echo $m;}
?>
ごめんなさい。
・・・と、言うわけでご無沙汰です。少佐です。
とりあえず今回はメモ代わりに勉強したい事とかしておきたい事などを
優先順位つけて並べてみる。
プログラミング編
- Smartyを覚える。
- CakePHPを覚える。
- 上記を勉強した上で架空のポータルサイトを試しに構築
- 寧ろOpenPNEで何か作るのもありかも?
- 上記4つが身についたらJAVAの基礎を勉強。
生活編
- 学校の手続き。
- 髪を切る。
- プログラマー同士の繋がりを活性化したい。それ用のSNSでも作るか?
- 外付けHDDをもう一台買う。
- それにUbuntuをインスコ。
大体こんな感じ。さー寝るか。
つっても、まだインストールしただけだけど(←
・・・というわけで、ブログ放置してました。最近だらけ気味な少佐です。
それでも何故か少しだけアクセスはあったんですね。(ソースはGoogleAnalytics)
何かもーホント・・・
暇人っすね
・・・じゃなくて、ありがとうございます、ハイ。
それはさておき、手始めにインストールするまでにした事を適当に書き連ねてみようかと。
1.公式でダウンロード
これは言わずもがな。
2.XAMPPのlocalhostに入れる
本当ならここで解凍したフォルダを丸ごとxampplite/htdocsディレクトリに入れる所だけど、
ウチの場合はApacheの設定をxampplite/apache/conf/extra/httpd-userdir.confで
<IfModule userdir_module>
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received. Note that you must also set
# the default access control for these directories, as in the example below.
#
#UserDir "My Documents/My Website"
UserDir "Y:/home/*/public_html"
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory C:/Documents and Settings/*/"My Documents/My Website">
# AllowOverride FileInfo AuthConfig Limit Indexes
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
<Directory "Y:/home/*/public_html">
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>
…と、いった具合に変更してるので、フォルダの中身だけを
home/cake/public_html/ディレクトリに。
3.フォルダ内に入ってる.htaccessの変更
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
デフォルトがこんな感じ。これを・・・
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
RewriteBase /~cake
</IfModule>
・・・と、いった感じに変更。
4.動作確認
最後にブラウザからhttp://localhost/~cake/にアクセス。

上の画像みたいなページが出たら、成功だそうです。
・・・ってな感じで、次の日曜辺りにでも本格的にCakePHPに触ってみるよ!よ!
ああ、そうそう。どうでも良いけど、新しいPC買いました。
やっぱCore2&メモリ4GBは快適だね!
最近のコメント