200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 301 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。 新的永久性的 URI 应当在响应的 Location 域中返回。除非这是一个 HEAD 请求,否则响应的实体中应当包含指向新的 URI 的超链接及简短说明。 如果这不是一个 GET 或者 HEAD 请求,因此浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。 注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。
200 OK 一切正常,对GET和POST请求的应答文档跟在后面。 301 Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL 404 Not Found 无法找到指定位置的资源。这也是一个常用的应答。 502 Bad Gateway 服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
10. 有如下数据库, 用原生态mysql扩展去连接并查询user表的前十行 host: 192.168.0.254 port: 3306 user: one pass: piece database: db_user table: user
$link = mysql_connect("192.168.0.254:3306","one","piece") or die('Could not connect: '.mysql_error()); mysql_select_db('db_user',$link); $query = mysql_query("select * from user limit 10"); while($rs = mysql_fetch_array($query,MYSQL_ASSOC)) {}
defined("CON_PATH","/data/wwwroot/www.xx.com/app/cntroller/"); $sb = new controller_sb(); ------------------------------------ function __autoload_my_classes($classname) { # ... your logic to include classes here } spl_autoload_register('__autoload_my_classes'); ----------------------------------------------------------- 12. 用set_error_handle 去捕获错误并输出, 级别自己定 set_error_handle(callback,level) function callback(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] ){ }
function dealErrorHandler($errno,$errstr,$errfile,$errline) { switch($errno){ case E_USER_ERROR: echo "error [$errno] $errstr fatal error on line $errline in file $errfile"; break; case E_USER_WARNING: echo "my warning [$errno] $errstr": break; case E_USER_NOTICE: echo "my notice[$errno] $errstr"; break; default: echo "unkonwn error type :[$errno] $errstr"; break; } } set_erro_handler(dealErrorHandler);
i am here 1 总结 a.如果include或include_once不是在函数或方法中被调用,则输出结果均一样。 b.如果include或 include_once在函数或方法中被调用,则如果想让第二次及以后调用时有结果,则必须用include,而不能用include_once,这一点一定要注意。
第二部分 1. 简单实现一个单例+工厂的设计模式abstract class Example{ // The parameterized factory method public static function factory($type) { if (include_once 'Drivers/' . $type . '.php') { $classname = 'Driver_' . $type; return new $classname; } else { throw new Exception ('Driver not found'); } }}// Load a MySQL Driver$mysql = Example::factory('MySQL'); // Load a SQLite Driver $sqlite = Example::factory('SQLite'); definded('DRIVER','/data/wwwroot/www.want.com/core/driver/');abstract class Example(){ private function __construct() { } public static function factory($type) { if(include_once(DRIVER.$type.'.php')) { return ExampleSon::singleton($type); } else { throw new Exception("Driver is not found!"); } } }class ExampleSon implements Example{ // Hold an instance of the class private static $instance; //静态私有的类实例 // A private constructor; prevents direct creation of object private function __construct() { echo 'I am constructed'; } // The singleton method public static function singleton() { if (!isset(self::$instance)) { //如果没有设置静态私有类实例,创建之 $c = __CLASS__; //获得类名称 self::$instance = new $c } return self::$instance; } // Example method public function bark() { echo 'Woof!'; } // Prevent users to clone the instance public function __clone() //不允许被克隆 { trigger_error('Clone is not allowed.', E_USER_ERROR); }}关键词: 1 私有静态成员变量 2 __CLASS__获取当前类名 3 公共静态方法获取单例 4 覆盖__clone()方法