7月 14
PHPベンãƒãƒžãƒ¼ã‚¯: Zend Framework vs Symfony vs CakePHP vs CodeIgniter vs PHP on TRAX – å¾’ç„¶ãªã‚‹ã¾ã¾ã«Blog
- Zend-Framework
- Symfony
- CakePHP
- Codelgniter
- PHP on TRAX
ã®ãƒ™ãƒ³ãƒãƒžãƒ¼ã‚¯çµæžœãŒè¼‰ã£ã¦ã„ã¾ã™ã€‚
ãŸã ã€
モデル作æˆã‚’行ã‚ãªã„ã¯ãšãªã®ã«CakePHPã ã‘モデルãŒç”Ÿæˆã•れるよã†ã«ãªã£ã¦ã„ã¾ã—ãŸã€‚
PHPベンãƒãƒžãƒ¼ã‚¯ CakePHPã§ãƒ¢ãƒ‡ãƒ«ã‚’使用ã—ãªã„ | Shin x blog
ãªã®ã§ã€æ˜¯éžCakePHP もモデル使用ã—ãªã„ソースã§å®Ÿè¡Œã—ãŸçµæžœã‚’見ã¦ã¿ãŸã„ã§ã™ã。
実行環境ãŒå…ƒã‚¨ãƒ³ãƒˆãƒªã¨ã¯ç•°ãªã‚‹ã®ã§çµ¶å¯¾çš„ãªæ•°å€¤ã«ã¯ã‚ã¾ã‚Šæ„味ãŒç„¡ã„ã§ã™ãŒã€ä¸¡è€…を比ã¹ã‚‹ã¨ãƒ¢ãƒ‡ãƒ«ç”Ÿæˆãªã—ã®æ–¹ãŒ20%ã»ã©é€Ÿã„よã†ã§ã™ã€‚
PHPベンãƒãƒžãƒ¼ã‚¯ CakePHPã§ãƒ¢ãƒ‡ãƒ«ã‚’使用ã—ãªã„ | Shin x blog
モデル使用ã—ãªã„ã¨20% ã»ã©æ—©ã„ãã†ã§ã™ã€‚
7月 12
[マイ ドã‚ュメント] フォルダã®ãƒ‡ãƒ•ォルトã®ä¿å˜å ´æ‰€ã‚’変更ã™ã‚‹æ–¹æ³•
ITmedia Biz.ID:「マイドã‚ãƒ¥ãƒ¡ãƒ³ãƒˆã€æ•´ç†æ³•
コマンドラインを使用ã™ã‚‹ã¨ããªã©ã¯ä¸ä¾¿ã§è¨±ã›ãªã„マイドã‚ュメントã®ãƒ‘ス。。。
C:\Documents and Settings\username\My Documents
大文å—ã¯ã¾ã ã„ã„ã‘ã©ã€ã‚¹ãƒšãƒ¼ã‚¹ã¨ã‹ã¯ã€‚。。ã ã„ãŸã„é•·ã™ãŽã¾ã™ã€‚tab ã‚ーã§è£œå®Œã¯ã§ãã‚‹ã‘ã©ã€‚
ã—ã‹ã—ã€ã“ã®ãƒžã‚¤ãƒ‰ã‚ュメントã®å ´æ‰€ã‚’移動ã§ãã‚‹ã®ã¯çŸ¥ã‚Šã¾ã›ã‚“ã§ã—ãŸï¼
ã“れã§å°‘ã—ã¯å¿«é©ã«ãªã‚‹ã‹ãªã€‚
移動方法ã®ãƒ¡ãƒ¢
- マイドã‚ュメントã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãƒ—ãƒãƒ‘ティを表示
- ターゲットタブã®ã€Œç§»å‹•ã€ãƒœã‚¿ãƒ³ã‚’押ã™
- ç§»å‹•å…ˆã‚’é¸æŠžã™ã‚‹ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒå‡ºã‚‹ã®ã§ç§»å‹•å…ˆã‚’é¸æŠžã™ã‚‹
- 移動先ã«ãƒžã‚¤ãƒ‰ã‚ュメント内ã®ãƒ•ァイルを移動ã™ã‚‹ã‹èžã‹ã‚Œã‚‹ã®ã§å¿…è¦ãªã‚‰ç§»å‹•ã•ã›ã‚‹
Windows Vista ã§ã¯
C:\Users\username\
ã«å¤‰æ›´ã—ãŸã‚‰ã—ã„ã§ã™ã€‚
7月 12
view ã§ãƒ¢ãƒ‡ãƒ«ã®å€¤ãªã©ã‚’出力ã™ã‚‹éš›ã«
$html->tagValue("Model/hoge");
ã¨ã™ã‚Œã¨ã€HTMLエスケープ処ç†ã‚’ã—ã¦ãれるã®ã§ä¾¿åˆ©ã§ã™ã€‚
ãŸã ã€
CakePHP 1.1.15.5144以é™ã¯HtmlHelper#tagValueã«æ³¨æ„ | Shin x blog
ã«æ›¸ã‹ã‚Œã¦ã„るよã†ã«ã€CakePHP ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³1.1.15.5144 ã‹ã‚‰ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã™ã‚‹ã‹ã®ãƒ•ラグãŒè¿½åŠ ã•れãŸã‚ˆã†ã§ã™ã€‚
以å‰ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã—ãªã„ã‚’é¸æŠžã§ããªã‹ã£ãŸã®ã§ã€ãれã¯ãれã§ä¸ä¾¿ãªç‚¹ã‚‚ã‚りã¾ã—ãŸã€‚
MOONGIFT ブãƒã‚° ? CakePHP覚書(HTML Helpler)
ã—ã‹ã—今回ã®å¤‰æ›´ã§æ³¨æ„ã—ãªã‘れã°ã„ã‘ãªã„ã®ã¯ã€ãƒ‡ãƒ•ォルトã§ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã•れã¦ã„ãŸã®ãŒãƒ‡ãƒ•ォルトã§ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã•れãªããªã£ãŸã“ã¨ã§ã™ã€‚
cake/libs/view/helpers/html.php
function tagValue($fieldName, $escape = false)
以å‰ã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã•ã›ã‚‹ã«ã¯
$html->tagValue("Model/hoge", true);
ã¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
ã¾ãŸã€
ã¡ãªã¿ã«1.2.0.5147ã§ã¯tagValueãŒdeprecatedã«ãªã£ã¦ãŠã‚Šã€ä»£ã‚りã«valueメソッドを使ã†ã‚ˆã†ã«ãªã‚‹ã‚ˆã†ã§ã™ã€‚
ã¨ã„ã†ã“ã¨ã«ãªã‚‹ã‚ˆã†ã§ã™ã€‚
7月 10
コントãƒãƒ¼ãƒ©æ¯Žã«ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’変ãˆã¦ã„ã¦ã„る㨠flash メソッドã¯ä½¿ãˆãªã„ãªã‚ã¨æ€ã£ã¦ã„ãŸã®ã§ã™ãŒã€ä¸‹è¨˜ã®ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’コントãƒãƒ¼ãƒ©ã§æŒ‡å®šã§ãã¾ã™ã。
/app/app_controller.php ã«ä¸‹è¨˜ã® flash メソッドを追åŠ
function flash($message, $url, $pause = 1) {
$this->autoRender = false;
$this->autoLayout = false;
$this->set('url', $this->base . $url);
$this->set('message', $message);
$this->set('pause', $pause);
$this->set('page_title', $message);
if (file_exists(VIEWS . 'layouts' . DS . $this->layout.'_flash.thtml')) {
$flash = VIEWS . 'layouts' . DS . $this->layout.'_flash.thtml';
} elseif ($flash = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . "layouts" . DS . 'flash.thtml')) {
}
$this->render(null, false, $flash);
}
ã“れã§ã€
/app/views/layouts/指定ã—ãŸãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆå_flash.thtml
ã¨ã„ã†ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãƒ•ァイルãŒã‚れã°ã€ãれを使用ã—ã¦
ãªã‘れã°ã€ãƒ‡ãƒ•ォルト㮠flash.thtml を使用ã—ã¾ã™ã€‚
ã‚„ã£ã¦ã„ã‚‹ã“ã¨ã¯ã™ã”ãå˜ç´”ã§ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã‚¯ãƒ©ã‚¹ã® flash メソッドをオーãƒãƒ©ã‚¤ãƒ‰ã—ã¦ã€ä½¿ç”¨ã™ã‚‹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã™ã‚‹ã¨ã“ã‚ã§
if (file_exists(VIEWS . 'layouts' . DS . 'flash.thtml')) {
$flash = VIEWS . 'layouts' . DS . 'flash.thtml';
}
ã¨ãªã£ã¦ã„ãŸã¨ã“ã‚ã‚’
if (file_exists(VIEWS . 'layouts' . DS . $this->layout.'_flash.thtml')) {
$flash = VIEWS . 'layouts' . DS . $this->layout.'_flash.thtml';
}
ã«å¤‰æ›´ã—ãŸã ã‘ã§ã™ã€‚
ä»–ã«ã„ã„æ–¹æ³•ãŒã‚ã‚Œã°æ•™ãˆã¦ãã ã•ã„。
7月 10
データを更新ã—ãŸå¾Œãªã©ã«ã€Œæ›´æ–°ã—ã¾ã—ãŸã€ãªã©ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ç°¡å˜ã«å‡ºã›ã‚‹ã®ãŒã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ã®flash メソッド。
コントãƒãƒ¼ãƒ©ã§ã€
$this->flash('æ›´æ–°ã—ã¾ã—ãŸ', '/users');
ãªã©ã¨ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ç°¡å˜ã«å‡ºã›ã‚‹ã€‚
2ã¤ç›®ã®å¼•æ•°ã¯é£›ã³å…ˆURL を指定ã§ãる。
ã¡ãªã¿ã«ã“ã® flash メソッドã¯ä¸‹è¨˜ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚
/cake/libs/controller/controller.php
function flash($message, $url, $pause = 1) {
$this->autoRender = false;
$this->autoLayout = false;
$this->set('url', $this->base . $url);
$this->set('message', $message);
$this->set('pause', $pause);
$this->set('page_title', $message);
if (file_exists(VIEWS . 'layouts' . DS . 'flash.thtml')) {
$flash = VIEWS . 'layouts' . DS . 'flash.thtml';
} elseif ($flash = fileExistsInPath(LIBS . 'view' . DS . 'templates' . DS . "layouts" . DS . 'flash.thtml')) {
}
$this->render(null, false, $flash);
}
上ã®ã‚½ãƒ¼ã‚¹ã‚’見るã¨åˆ†ã‹ã‚‹ã‚ˆã†ã«ã€ã“ã® flash メソッドã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¯
$layout = "hoge";
ã¨ã‹æŒ‡å®šã—ã¦ã‚‚指定ã—ãŸãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã§ã¯è¡¨ç¤ºã•れã¾ã›ã‚“。
flash メソッドã§ã¯ flash.thtml ã¨ã„ã†ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’使用ã™ã‚‹ã“ã¨ã—ã‹ã§ãã¾ã›ã‚“。
/app/views/layouts/flash.thtml
を探ã—ã¦ãªã‘れã°ã€
/cake/libs/view/templates/layouts/flash.thtml
ã®ãƒ‡ãƒ•ォルトã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’使用ã—ã¾ã™ã€‚
ã¾ãŸã€ãƒ‡ãƒ•ォルト㮠flash.thtml ã¯
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo $page_title?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php if(Configure::read() == 0) { ?>
<meta http-equiv="Refresh" content="<?php echo $pause?>;url=<?php echo $url?>"/>
<?php } ?>
<style><!--
P { text-align:center; font:bold 1.1em sans-serif }
A { color:#444; text-decoration:none }
A:HOVER { text-decoration: underline; color:#44E }
--></style>
</head>
<body>
<p><a href="<?php echo $url?>"><?php echo $message?></a></p>
</body>
</html>
ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¦ã€
DEBUG モード㧠DEBUG = 0 を指定ã—ã¦ã„る㨠meta タグを利用ã—ã¦å‹æ‰‹ã«ç”»é¢é·ç§»ã—ã¾ã™ã€‚DEBUG モード㌠0 以外ã®å ´åˆã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’クリックã™ã‚‹ã¨æŒ‡å®šã—ãŸURLã«ç”»é¢é·ç§»ã—ã¾ã™ã€‚
éžå¸¸ã«ã‚·ãƒ³ãƒ—ルãªãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã§ã™ã®ã§ã€ä½¿ç”¨ã™ã‚‹ã¨ãã¯ã€
/app/views/layouts/flash.thtml
ã«ã‚³ãƒ”ーã—ã¦ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã—ãŸæ–¹ãŒã‚ˆã„ã§ã—ょã†ã€‚
7月 09
ヘルパーã‹ã‚‰ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ–¹æ³•ãŒåˆ†ã‹ã‚‰ãš
æ•™ãˆã¦ã„ãŸã ã„ãŸã®ã§ãƒ¡ãƒ¢ã€‚
例ãˆã° HogeComponent ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ãŸã„ヘルパーã«
$this->view->controller->HogeComponent->method();ã¨ã„ã†ã‚ˆã†ã«æ›¸ã‘ã°ã€HogeComponent ã® method ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãる。
ã“れã§ã€ãƒ˜ãƒ«ãƒ‘ーãŒã‹ãªã‚Šä½¿ã„ã‚„ã™ããªã‚Šã¾ã—ãŸã€‚
7月 06
GD ã§ãƒ¡ãƒ¢ãƒªã‚¨ãƒ©ãƒ¼
ã«æ›¸ã‹ã‚Œã¦ã„るよã†ã« GD ã§ JPEG ã‚„ PNG ã®å¤§ããªç”»åƒã‚’扱ã†ã¨ãã«
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 11648 bytes) in ...ã¨ã„ã†ã‚ˆã†ãªã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ã—ã¾ã„ã¾ã™ã€‚
上ã®ã‚¨ãƒ©ãƒ¼ãŒã¯ç§ãŒ EOS5D ã§æ’®å½±ã—㟠2912×4368ã¨ã‹ãªã‚Šå¤§ããªç”»åƒã§ã™ã€‚
大ãã•ã§åˆ¶é™ã™ã‚‹ã®ã‚‚一ã¤ã®æ–¹æ³•ã§ã™ãŒã€ã©ã†ã—ã¦ã‚‚大ããªç”»åƒã‚’å–り込ã¿ãƒªã‚µã‚¤ã‚ºã—ãªã‘れã°ã„ã‘ãªã„ã¨ããªã©ã®ãŸã‚ã«ä»¥ä¸‹ã®æ–¹æ³•ã‚‚ã‚りã¾ã™ã€‚
PHP: imagecreatefromjpeg – Manual
PHP ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„るメモリã®ç¯„囲ã§å¿…è¦ãªãƒ¡ãƒ¢ãƒªã‚’計算ã—ã¦
ini_set('memory_limit', 'xxM')ã¨è¨å®šã—れãれã¾ã™ã€‚
function setMemoryForImage( $filename ){
$imageInfo = getimagesize($filename);
$MB = 1048576; // number of bytes in 1M
$K64 = 65536; // number of bytes in 64K
$TWEAKFACTOR = 1.5; // Or whatever works for you
$memoryNeeded = round( ( $imageInfo[0] * $imageInfo[1]
* $imageInfo['bits']
* $imageInfo['channels'] / 8
+ $K64
) * $TWEAKFACTOR
);
//ini_get('memory_limit') only works if compiled with "--enable-memory-limit" also
//Default memory limit is 8MB so well stick with that.
//To find out what yours is, view your php.ini file.
$memoryLimit = 8 * $MB;
if (function_exists('memory_get_usage') &&
memory_get_usage() + $memoryNeeded > $memoryLimit)
{
$newLimit = $memoryLimitMB + ceil( ( memory_get_usage()
+ $memoryNeeded
- $memoryLimit
) / $MB
);
ini_set( 'memory_limit', $newLimit . 'M' );
return true;
}else
return false;
}
}
7月 05
デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã®ãƒ¡ãƒ¢
/app/config/core.php ã®52行目ã«
define('DEBUG', 0);ã¨å®šç¾©ã•れã¦ã„ã‚‹ã®ãŒãƒ‡ãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰
ã“ã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€æœ¬ç•ªç’°å¢ƒã€é–‹ç™ºç’°å¢ƒã¨åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãる。
DEBUG ã®å€¤ã¯
0: プãƒãƒ€ã‚¯ã‚·ãƒ§ãƒ³ãƒ¢ãƒ¼ãƒ‰ã€‚エラーã¯å‡ºåŠ›ã•れãšã€ãƒ‡ãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚‚表示ã•れã¾ã›ã‚“。
1: 開発モード。 Warnings ã¨ã‚¨ãƒ©ãƒ¼ã€ãƒ‡ãƒãƒƒã‚°ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã€‚
2: 開発モード。実行ã•れãŸSQL æ–‡ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
3: 開発モード。2ã«åŠ ãˆã¦ã€ç¾åœ¨ã®ã‚ªãƒ–ジェクト(通常ã¯ã‚³ãƒ³ãƒˆãƒãƒ¼ãƒ©ï¼‰ã®ãƒ•ルダンプも表示ã•れã¾ã™ã€‚
DEBUG=1 ã§é–‹ç™ºã‚’行ã„ã€ãƒ‡ãƒ¼ã‚¿å–å¾—ãªã©ã®æŒ™å‹•ãŒè€ƒãˆã¦ã„ã‚‹ã®ã¨é•ã†ã¨ãã«ã€
DEBUG=2 ã«ã™ã‚‹ã¨ã„ã†æ„Ÿã˜ã§ã‚„ã£ã¦ã„ã¾ã™ã€‚
ã‚ã¾ã‚Šã€ DEBUG=3 を使用ã—ã¦ã„ãªã„ãªã‚。コントãƒãƒ¼ãƒ©ã®ãƒ€ãƒ³ãƒ—ãªã®ã§é‡ãŒå¤šã™ãŽã¦ã‹ãˆã£ã¦è¦‹ã¥ã‚‰ã„ã®ã§ã€
debug($hoge);ãªã©ã§å¿…è¦ãªã¨ãã«å€‹åˆ¥ã«ãƒ€ãƒ³ãƒ—を出ã—ã¦ã—ã¾ã„ã¾ã™ã€‚
ã‚‚ã¡ã‚ん本番環境ã§ã¯ DEBUG=0 ã§ã™ã€‚
7月 05
CakePHP ã§ã‚ャッシュを使用ã™ã‚‹ã¨ãã«ä¾¿åˆ©ãªã‚°ãƒãƒ¼ãƒãƒ«é–¢æ•°ãŒã‚りã¾ã™ã€‚
- cache($path, $data, $expires, $target)
- $data ã®ãƒ‡ãƒ¼ã‚¿ã‚’ã‚ャッシュã—ã¾ã™ã€‚
ã‚ャッシュã™ã‚‹å ´æ‰€ã¯
$target==”cache” ãªã‚‰ /app/tmp/cache/ + $path
$target==”public” ãªã‚‰ /webroot/ + $path
ã«ãªã‚Šã¾ã™ã€‚$target を指定ã—ãªã‘れ㰠$target==”cache” ã§ã™ã€‚
$expires ã¯ã‚ãƒ£ãƒƒã‚·ãƒ¥ã®æœ‰åŠ¹æœŸé–“ã§ã™ã€‚
内部ã§
$expires = strtotime($expires, time());
ãŒè¡Œã‚れるã®ã§ã€strtotime ã® Data input formats å½¢å¼ã«æº–æ‹ ã—ãŸã‚‚ã®ã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“。
デフォルト㯠$expires = ‘+1 day’ ã§ã™ã€‚
- clearCache($params, $type, $ext)
- $paramsãŒæ–‡å—列ã§ã‚ャッシュディレクトリã‹ãƒ•ァイルåã«ãƒžãƒƒãƒã™ã‚‹å ´åˆã¯ã‚ャッシュã‹ã‚‰å‰Šé™¤ã•れã¾ã™ã€‚
$params ãŒé…列ã®å ´åˆã¯é…åˆ—å†…ã®æ–‡å—列全ã¦ã«å¯¾ã—ã¦ä¸Šè¨˜ã®å‡¦ç†ãŒè¡Œã‚れã¾ã™ã€‚
対象ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ $type ã§æŒ‡å®šã—ã¾ã™ã€‚
$type ã®ãƒ‡ãƒ•ォルト㯠‘views’ ã§ã™ã€‚
対象ディレクトリ㯠/app/tmp/cache/ + $type ã«ãªã‚Šã¾ã™ã€‚
cache 関数㧠‘public’ を指定ã—ãŸå ´åˆã®ã‚¯ãƒªã‚¢ã¯ã“ã®é–¢æ•°ã§ã¯ã§ããªã„よã†ã§ã™ã€‚
çµæ§‹ç°¡å˜ã«ã‚ャッシュ処ç†ãŒã§ããã†ã§ã™ã€‚
Recent Comments