debug

sample

code


target file(s):


controllers/debug_controller.php

1 <?php
2
3 class DebugController extends AppController {
4
5 var $name = 'Debug';
6 var $uses = array();
7
8 function index() {
9 }
10 }
11 ?>

views/debug/index.ctp

1 <?php
2 $params = array(
3 'sourceKey' => 'debug',
4 );
5 echo $this->element('pageLink', $params);
6 ?>
7
8 <?php
9 $script = <<< EOD
10 <style type="text/css">
11 <!--
12 .indent {
13 margin-left:20px;
14 }
15 -->
16 </style>
17 EOD;
18
19 $this->addScript($script);
20 ?>
21
22
23
24 <hr>
25 <h3>debug()</h3>
26 <h4>説明</h4>
27 <div class="indent">
28 <ul>
29 <li>cake/basics.php で定義されている debug() 関数
30 <li>参考:
31 <?php
32 $url = 'http://book.cakephp.org/ja/view/1190/Basic-Debugging';
33 echo $html->link($url, $url);
34 ?>
35 <li>使用法
36 <pre>
37 debug($var = false, $showHtml = false, $showFrom = true)
38 $var: 表示したい変数など
39 $showHtml: '&lt;'などを'&amp;lt;'などに変換するかどうか
40 $showFrom: どのファイルの何行目で呼ばれたかを表示するかどうか
41 </pre>
42 <li>Configure::read('debug') が 0 より大きい値に設定されていないと表示されません。
43 </ul>
44 </div>
45
46 <h4>ソースコード</h4>
47 <div class="indent">
48 <pre><code><?php
49 $code = '$foo = array(\'bar<b>b</b>\');
50 debug($foo);
51 ';
52 echo h($code);
53 ?>
54 </code></pre>
55 </div>
56
57 <h4>実行結果</h4>
58 <div class="indent">
59 <strong>app/views/debug/index.ctp</strong> (line <strong>61</strong>)
60 <pre class="cake-debug">
61 Array
62 (
63 [0] =&gt; bar&lt;b&gt;b&lt;/b&gt;
64 )
65
66 </pre>
67 </div>
68
69
70
71 <br><hr>
72 <h3>pr()</h3>
73 <h4>説明</h4>
74 <div class="indent">
75 <ul>
76 <li>cake/basics.php で定義されている pr() 関数
77 <li>print_r()の出力結果をpreタグで囲んで出力する。
78 <li>使用法
79 <pre>
80 pr($var)
81 $var: 表示したい変数など
82 </pre>
83 <li>'&lt;'などはエスケープされません。
84 <li>Configure::read('debug') が 0 より大きい値に設定されていないと表示されません。
85 </ul>
86 </div>
87
88 <h4>ソースコード</h4>
89 <div class="indent">
90 <pre><code><?php
91 $code = '$foo = array(\'bar<b>b</b>\');
92 pr($foo);
93 ';
94 echo h($code);
95 ?>
96 </code></pre>
97 </div>
98
99 <h4>実行結果</h4>
100 <div class="indent">
101 <pre>Array
102 (
103 [0] => bar<b>b</b>
104 )
105 </pre>
106 </div>
107
108
109
110 <br><hr>
111 <h3>Debugger::dump()</h3>
112
113 <h4>説明</h4>
114 <div class="indent">
115 <ul>
116 <li>cake/libs/debugger.php で定義されている dump() 関数
117 <li>出力する変数のタイプに合わせて適切に出力される。
118 <li>使用法
119 <pre>
120 dump($var)
121 $var: 表示したい変数など
122 </pre>
123 <li>Configure::read('debug') が 0 より大きい値に設定されていないと表示されません。
124 <li>Debugger::log()を使えば、スタックトレースと併せて同様のものが app/tmp/logs/debug.log に出力されます。
125 </ul>
126 </div>
127
128 <h4>ソースコード</h4>
129 <div class="indent">
130 <pre><code><?php
131 $code = '$foo = array(\'bar<b>b</b>\');
132 Debugger::dump($foo);
133 ';
134 echo h($code);
135 ?>
136 </code></pre>
137 </div>
138
139 <h4>実行結果</h4>
140 <div class="indent">
141 <pre>array(
142 "bar&lt;b&gt;b&lt;/b&gt;"
143 )</pre><pre></pre>
144 </div>
145
146
147
148 <br><hr>
149 <h3>Debugger::trace()</h3>
150
151 <h4>説明</h4>
152 <div class="indent">
153 <ul>
154 <li>cake/libs/debugger.php で定義されている trace() 関数
155 <li>その時点でのスタックトレースを返します。
156 <li>使用法
157 <pre>
158 trace($options)
159 $options: 表示フォーマットの定義など
160 </pre>
161 <li>Configure::read('debug') が 0 より大きい値に設定されていないと表示されずに終了します。
162 </ul>
163 </div>
164
165 <h4>ソースコード</h4>
166 <div class="indent">
167 <pre><code><?php
168 $code = 'pr( Debugger::trace() );
169 ';
170 echo h($code);
171 ?>
172 </code></pre>
173 </div>
174
175 <h4>実行結果</h4>
176 <div class="indent">
177 <pre>include - APP/views/debug/index.ctp, line 164
178 View::_render() - CORE/cake/libs/view/view.php, line 723
179 View::render() - CORE/cake/libs/view/view.php, line 419
180 Controller::render() - CORE/cake/libs/controller/controller.php, line 911
181 Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 207
182 Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
183 [main] - APP/webroot/index.php, line 83</pre>
184 </div>
185
186
187
188 <br><hr>
189 <h3>Debugger::excerpt</h3>
190
191 <h4>説明</h4>
192 <div class="indent">
193 <ul>
194 <li>cake/libs/debugger.php で定義されている excerpt() 関数
195 <li>ファイルの一部を抜粋して表示します。
196 <li>使用法
197 <pre>
198 excerpt($file, $line, $context)
199 $file: ファイルの絶対パス
200 $line: 何行目を抜粋するか
201 $context: 指定した行の前後何行を抜粋するか
202 </pre>
203 <li>Configure::read('debug') が 0 より大きい値に設定されていないと表示されずに終了します。
204 </ul>
205 </div>
206
207 <h4>ソースコード</h4>
208 <div class="indent">
209 <pre><code><?php
210 $code = 'pr( Debugger::excerpt(ROOT.DS.LIBS.\'debugger.php\', 450, 2) );
211 ';
212 echo h($code);
213 ?>
214 </code></pre>
215 </div>
216
217 <h4>実行結果</h4>
218 <div class="indent">
219 <pre>Array
220 (
221 [0] => <code><span style="color: #000000">&nbsp;*&nbsp;@link&nbsp;http://book.cakephp.org/view/1191/Using-the-Debugger-Class</span></code>
222 [1] => <code><span style="color: #000000">&nbsp;*/</span></code>
223 [2] => <code><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;excerpt($file,&nbsp;$line,&nbsp;$context&nbsp;=&nbsp;2)&nbsp;{</span></code>
224 [3] => <span class="code-highlight"><code><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;$lines&nbsp;=&nbsp;array();</span></code></span>
225 [4] => <code><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!file_exists($file))&nbsp;{</span></code>
226 )
227 </pre>
228 </div>

views/elements/pageLink.ctp

1 <dl>
2 <?php
3 echo "<dt>$sourceKey</dt><br>\n";
4 $link = array(
5 'controller' => $sourceKey,
6 'action' => 'index',
7 );
8 echo "<dd>" . $html->link('sample', $link) . "</dd><br>";
9
10 $link = array(
11 'controller' => 'source',
12 'action' => 'view',
13 $sourceKey
14 );
15 echo "<dd>" . $html->link('code', $link) . "</dd><br>";
16 ?>
17 </dl>