統計
| ブランチ: | リビジョン:

pictcode / lib / Cake / Error / exceptions.php @ 0b1b8047

履歴 | 表示 | アノテート | ダウンロード (13.823 KB)

1
<?php
2
/**
3
 * Exceptions file. Contains the various exceptions CakePHP will throw until they are
4
 * moved into their permanent location.
5
 *
6
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
7
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
8
 *
9
 * Licensed under The MIT License
10
 * For full copyright and license information, please see the LICENSE.txt
11
 * Redistributions of files must retain the above copyright notice.
12
 *
13
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
14
 * @link          http://book.cakephp.org/2.0/en/development/testing.html
15
 * @package       Cake.Error
16
 * @since         CakePHP(tm) v 2.0
17
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
18
 */
19

    
20
/**
21
 * Base class that all Exceptions extend.
22
 *
23
 * @package       Cake.Error
24
 */
25
class CakeBaseException extends RuntimeException {
26

    
27
/**
28
 * Array of headers to be passed to CakeResponse::header()
29
 *
30
 * @var array
31
 */
32
        protected $_responseHeaders = null;
33

    
34
/**
35
 * Get/set the response header to be used
36
 *
37
 * @param string|array $header An array of header strings or a single header string
38
 *  - an associative array of "header name" => "header value"
39
 *  - an array of string headers is also accepted
40
 * @param string $value The header value.
41
 * @return array
42
 * @see CakeResponse::header()
43
 */
44
        public function responseHeader($header = null, $value = null) {
45
                if ($header) {
46
                        if (is_array($header)) {
47
                                return $this->_responseHeaders = $header;
48
                        }
49
                        $this->_responseHeaders = array($header => $value);
50
                }
51
                return $this->_responseHeaders;
52
        }
53

    
54
}
55

    
56
/**
57
 * Parent class for all of the HTTP related exceptions in CakePHP.
58
 * All HTTP status/error related exceptions should extend this class so
59
 * catch blocks can be specifically typed.
60
 *
61
 * @package       Cake.Error
62
 */
63
if (!class_exists('HttpException', false)) {
64
        class HttpException extends CakeBaseException {
65
        }
66
}
67

    
68
/**
69
 * Represents an HTTP 400 error.
70
 *
71
 * @package       Cake.Error
72
 */
73
class BadRequestException extends HttpException {
74

    
75
/**
76
 * Constructor
77
 *
78
 * @param string $message If no message is given 'Bad Request' will be the message
79
 * @param int $code Status code, defaults to 400
80
 */
81
        public function __construct($message = null, $code = 400) {
82
                if (empty($message)) {
83
                        $message = 'Bad Request';
84
                }
85
                parent::__construct($message, $code);
86
        }
87

    
88
}
89

    
90
/**
91
 * Represents an HTTP 401 error.
92
 *
93
 * @package       Cake.Error
94
 */
95
class UnauthorizedException extends HttpException {
96

    
97
/**
98
 * Constructor
99
 *
100
 * @param string $message If no message is given 'Unauthorized' will be the message
101
 * @param int $code Status code, defaults to 401
102
 */
103
        public function __construct($message = null, $code = 401) {
104
                if (empty($message)) {
105
                        $message = 'Unauthorized';
106
                }
107
                parent::__construct($message, $code);
108
        }
109

    
110
}
111

    
112
/**
113
 * Represents an HTTP 403 error.
114
 *
115
 * @package       Cake.Error
116
 */
117
class ForbiddenException extends HttpException {
118

    
119
/**
120
 * Constructor
121
 *
122
 * @param string $message If no message is given 'Forbidden' will be the message
123
 * @param int $code Status code, defaults to 403
124
 */
125
        public function __construct($message = null, $code = 403) {
126
                if (empty($message)) {
127
                        $message = 'Forbidden';
128
                }
129
                parent::__construct($message, $code);
130
        }
131

    
132
}
133

    
134
/**
135
 * Represents an HTTP 404 error.
136
 *
137
 * @package       Cake.Error
138
 */
139
class NotFoundException extends HttpException {
140

    
141
/**
142
 * Constructor
143
 *
144
 * @param string $message If no message is given 'Not Found' will be the message
145
 * @param int $code Status code, defaults to 404
146
 */
147
        public function __construct($message = null, $code = 404) {
148
                if (empty($message)) {
149
                        $message = 'Not Found';
150
                }
151
                parent::__construct($message, $code);
152
        }
153

    
154
}
155

    
156
/**
157
 * Represents an HTTP 405 error.
158
 *
159
 * @package       Cake.Error
160
 */
161
class MethodNotAllowedException extends HttpException {
162

    
163
/**
164
 * Constructor
165
 *
166
 * @param string $message If no message is given 'Method Not Allowed' will be the message
167
 * @param int $code Status code, defaults to 405
168
 */
169
        public function __construct($message = null, $code = 405) {
170
                if (empty($message)) {
171
                        $message = 'Method Not Allowed';
172
                }
173
                parent::__construct($message, $code);
174
        }
175

    
176
}
177

    
178
/**
179
 * Represents an HTTP 500 error.
180
 *
181
 * @package       Cake.Error
182
 */
183
class InternalErrorException extends HttpException {
184

    
185
/**
186
 * Constructor
187
 *
188
 * @param string $message If no message is given 'Internal Server Error' will be the message
189
 * @param int $code Status code, defaults to 500
190
 */
191
        public function __construct($message = null, $code = 500) {
192
                if (empty($message)) {
193
                        $message = 'Internal Server Error';
194
                }
195
                parent::__construct($message, $code);
196
        }
197

    
198
}
199

    
200
/**
201
 * CakeException is used a base class for CakePHP's internal exceptions.
202
 * In general framework errors are interpreted as 500 code errors.
203
 *
204
 * @package       Cake.Error
205
 */
206
class CakeException extends CakeBaseException {
207

    
208
/**
209
 * Array of attributes that are passed in from the constructor, and
210
 * made available in the view when a development error is displayed.
211
 *
212
 * @var array
213
 */
214
        protected $_attributes = array();
215

    
216
/**
217
 * Template string that has attributes sprintf()'ed into it.
218
 *
219
 * @var string
220
 */
221
        protected $_messageTemplate = '';
222

    
223
/**
224
 * Constructor.
225
 *
226
 * Allows you to create exceptions that are treated as framework errors and disabled
227
 * when debug = 0.
228
 *
229
 * @param string|array $message Either the string of the error message, or an array of attributes
230
 *   that are made available in the view, and sprintf()'d into CakeException::$_messageTemplate
231
 * @param int $code The code of the error, is also the HTTP status code for the error.
232
 */
233
        public function __construct($message, $code = 500) {
234
                if (is_array($message)) {
235
                        $this->_attributes = $message;
236
                        $message = __d('cake_dev', $this->_messageTemplate, $message);
237
                }
238
                parent::__construct($message, $code);
239
        }
240

    
241
/**
242
 * Get the passed in attributes
243
 *
244
 * @return array
245
 */
246
        public function getAttributes() {
247
                return $this->_attributes;
248
        }
249

    
250
}
251

    
252
/**
253
 * Missing Controller exception - used when a controller
254
 * cannot be found.
255
 *
256
 * @package       Cake.Error
257
 */
258
class MissingControllerException extends CakeException {
259

    
260
        protected $_messageTemplate = 'Controller class %s could not be found.';
261

    
262
//@codingStandardsIgnoreStart
263
        public function __construct($message, $code = 404) {
264
                parent::__construct($message, $code);
265
        }
266
//@codingStandardsIgnoreEnd
267

    
268
}
269

    
270
/**
271
 * Missing Action exception - used when a controller action
272
 * cannot be found.
273
 *
274
 * @package       Cake.Error
275
 */
276
class MissingActionException extends CakeException {
277

    
278
        protected $_messageTemplate = 'Action %s::%s() could not be found.';
279

    
280
//@codingStandardsIgnoreStart
281
        public function __construct($message, $code = 404) {
282
                parent::__construct($message, $code);
283
        }
284
//@codingStandardsIgnoreEnd
285

    
286
}
287

    
288
/**
289
 * Private Action exception - used when a controller action
290
 * starts with a  `_`.
291
 *
292
 * @package       Cake.Error
293
 */
294
class PrivateActionException extends CakeException {
295

    
296
        protected $_messageTemplate = 'Private Action %s::%s() is not directly accessible.';
297

    
298
//@codingStandardsIgnoreStart
299
        public function __construct($message, $code = 404, Exception $previous = null) {
300
                parent::__construct($message, $code, $previous);
301
        }
302
//@codingStandardsIgnoreEnd
303

    
304
}
305

    
306
/**
307
 * Used when a component cannot be found.
308
 *
309
 * @package       Cake.Error
310
 */
311
class MissingComponentException extends CakeException {
312

    
313
        protected $_messageTemplate = 'Component class %s could not be found.';
314

    
315
}
316

    
317
/**
318
 * Used when a behavior cannot be found.
319
 *
320
 * @package       Cake.Error
321
 */
322
class MissingBehaviorException extends CakeException {
323

    
324
        protected $_messageTemplate = 'Behavior class %s could not be found.';
325

    
326
}
327

    
328
/**
329
 * Used when a view file cannot be found.
330
 *
331
 * @package       Cake.Error
332
 */
333
class MissingViewException extends CakeException {
334

    
335
        protected $_messageTemplate = 'View file "%s" is missing.';
336

    
337
}
338

    
339
/**
340
 * Used when a layout file cannot be found.
341
 *
342
 * @package       Cake.Error
343
 */
344
class MissingLayoutException extends CakeException {
345

    
346
        protected $_messageTemplate = 'Layout file "%s" is missing.';
347

    
348
}
349

    
350
/**
351
 * Used when a helper cannot be found.
352
 *
353
 * @package       Cake.Error
354
 */
355
class MissingHelperException extends CakeException {
356

    
357
        protected $_messageTemplate = 'Helper class %s could not be found.';
358

    
359
}
360

    
361
/**
362
 * Runtime Exceptions for ConnectionManager
363
 *
364
 * @package       Cake.Error
365
 */
366
class MissingDatabaseException extends CakeException {
367

    
368
        protected $_messageTemplate = 'Database connection "%s" could not be found.';
369

    
370
}
371

    
372
/**
373
 * Used when no connections can be found.
374
 *
375
 * @package       Cake.Error
376
 */
377
class MissingConnectionException extends CakeException {
378

    
379
        protected $_messageTemplate = 'Database connection "%s" is missing, or could not be created.';
380

    
381
/**
382
 * Constructor
383
 *
384
 * @param string|array $message The error message.
385
 * @param int $code The error code.
386
 */
387
        public function __construct($message, $code = 500) {
388
                if (is_array($message)) {
389
                        $message += array('enabled' => true);
390
                }
391
                parent::__construct($message, $code);
392
        }
393

    
394
}
395

    
396
/**
397
 * Used when a Task cannot be found.
398
 *
399
 * @package       Cake.Error
400
 */
401
class MissingTaskException extends CakeException {
402

    
403
        protected $_messageTemplate = 'Task class %s could not be found.';
404

    
405
}
406

    
407
/**
408
 * Used when a shell method cannot be found.
409
 *
410
 * @package       Cake.Error
411
 */
412
class MissingShellMethodException extends CakeException {
413

    
414
        protected $_messageTemplate = "Unknown command %1\$s %2\$s.\nFor usage try `cake %1\$s --help`";
415

    
416
}
417

    
418
/**
419
 * Used when a shell cannot be found.
420
 *
421
 * @package       Cake.Error
422
 */
423
class MissingShellException extends CakeException {
424

    
425
        protected $_messageTemplate = 'Shell class %s could not be found.';
426

    
427
}
428

    
429
/**
430
 * Exception class to be thrown when a datasource configuration is not found
431
 *
432
 * @package       Cake.Error
433
 */
434
class MissingDatasourceConfigException extends CakeException {
435

    
436
        protected $_messageTemplate = 'The datasource configuration "%s" was not found in database.php';
437

    
438
}
439

    
440
/**
441
 * Used when a datasource cannot be found.
442
 *
443
 * @package       Cake.Error
444
 */
445
class MissingDatasourceException extends CakeException {
446

    
447
        protected $_messageTemplate = 'Datasource class %s could not be found. %s';
448

    
449
}
450

    
451
/**
452
 * Exception class to be thrown when a database table is not found in the datasource
453
 *
454
 * @package       Cake.Error
455
 */
456
class MissingTableException extends CakeException {
457

    
458
        protected $_messageTemplate = 'Table %s for model %s was not found in datasource %s.';
459

    
460
}
461

    
462
/**
463
 * Exception raised when a Model could not be found.
464
 *
465
 * @package       Cake.Error
466
 */
467
class MissingModelException extends CakeException {
468

    
469
        protected $_messageTemplate = 'Model %s could not be found.';
470

    
471
}
472

    
473
/**
474
 * Exception raised when a test loader could not be found
475
 *
476
 * @package       Cake.Error
477
 */
478
class MissingTestLoaderException extends CakeException {
479

    
480
        protected $_messageTemplate = 'Test loader %s could not be found.';
481

    
482
}
483

    
484
/**
485
 * Exception raised when a plugin could not be found
486
 *
487
 * @package       Cake.Error
488
 */
489
class MissingPluginException extends CakeException {
490

    
491
        protected $_messageTemplate = 'Plugin %s could not be found.';
492

    
493
}
494

    
495
/**
496
 * Exception raised when a Dispatcher filter could not be found
497
 *
498
 * @package       Cake.Error
499
 */
500
class MissingDispatcherFilterException extends CakeException {
501

    
502
        protected $_messageTemplate = 'Dispatcher filter %s could not be found.';
503

    
504
}
505

    
506
/**
507
 * Exception class for AclComponent and Interface implementations.
508
 *
509
 * @package       Cake.Error
510
 */
511
class AclException extends CakeException {
512
}
513

    
514
/**
515
 * Exception class for Cache. This exception will be thrown from Cache when it
516
 * encounters an error.
517
 *
518
 * @package       Cake.Error
519
 */
520
class CacheException extends CakeException {
521
}
522

    
523
/**
524
 * Exception class for Router. This exception will be thrown from Router when it
525
 * encounters an error.
526
 *
527
 * @package       Cake.Error
528
 */
529
class RouterException extends CakeException {
530
}
531

    
532
/**
533
 * Exception class for CakeLog. This exception will be thrown from CakeLog when it
534
 * encounters an error.
535
 *
536
 * @package       Cake.Error
537
 */
538
class CakeLogException extends CakeException {
539
}
540

    
541
/**
542
 * Exception class for CakeSession. This exception will be thrown from CakeSession when it
543
 * encounters an error.
544
 *
545
 * @package       Cake.Error
546
 */
547
class CakeSessionException extends CakeException {
548
}
549

    
550
/**
551
 * Exception class for Configure. This exception will be thrown from Configure when it
552
 * encounters an error.
553
 *
554
 * @package       Cake.Error
555
 */
556
class ConfigureException extends CakeException {
557
}
558

    
559
/**
560
 * Exception class for Socket. This exception will be thrown from CakeSocket, CakeEmail, HttpSocket
561
 * SmtpTransport, MailTransport and HttpResponse when it encounters an error.
562
 *
563
 * @package       Cake.Error
564
 */
565
class SocketException extends CakeException {
566
}
567

    
568
/**
569
 * Exception class for Xml. This exception will be thrown from Xml when it
570
 * encounters an error.
571
 *
572
 * @package       Cake.Error
573
 */
574
class XmlException extends CakeException {
575
}
576

    
577
/**
578
 * Exception class for Console libraries. This exception will be thrown from Console library
579
 * classes when they encounter an error.
580
 *
581
 * @package       Cake.Error
582
 */
583
class ConsoleException extends CakeException {
584
}
585

    
586
/**
587
 * Represents a fatal error
588
 *
589
 * @package       Cake.Error
590
 */
591
class FatalErrorException extends CakeException {
592

    
593
/**
594
 * Constructor
595
 *
596
 * @param string $message The error message.
597
 * @param int $code The error code.
598
 * @param string $file The file the error occurred in.
599
 * @param int $line The line the error occurred on.
600
 */
601
        public function __construct($message, $code = 500, $file = null, $line = null) {
602
                parent::__construct($message, $code);
603
                if ($file) {
604
                        $this->file = $file;
605
                }
606
                if ($line) {
607
                        $this->line = $line;
608
                }
609
        }
610

    
611
}
612

    
613
/**
614
 * Not Implemented Exception - used when an API method is not implemented
615
 *
616
 * @package       Cake.Error
617
 */
618
class NotImplementedException extends CakeException {
619

    
620
        protected $_messageTemplate = '%s is not implemented.';
621

    
622
//@codingStandardsIgnoreStart
623
        public function __construct($message, $code = 501) {
624
                parent::__construct($message, $code);
625
        }
626
//@codingStandardsIgnoreEnd
627

    
628
}