200行描述MVC,读完kohana总结的一点笔记
200行大点,读完kohana总结的一点笔记。 无 ?php header('Content-type: text/html; charset=utf-8'); define('__ROOT__',str_replace('\\','/', __DIR__ )); //set_exception_handler(array("Factory","last_fun")); 设置一个用户定义的异常处理函数 Factory
200行大点,读完kohana总结的一点笔记。
<?php header('Content-type: text/html; charset=utf-8'); define('__ROOT__',str_replace('\\','/', __DIR__ )); //set_exception_handler(array("Factory","last_fun")); 设置一个用户定义的异常处理函数 Factory::getIns($_SERVER['REQUEST_URI']); abstract class ProductInterface { public $data=array(); //用于接收传过来的内容 public static $magic_quotes =NULL; public function __construct() { self::$magic_quotes = (version_compare(PHP_VERSION, '5.4') < 0 AND get_magic_quotes_gpc()); // 清洁所有请求变量 $_GET = self::sanitize($_GET); $_POST = self::sanitize($_POST); $_COOKIE = self::sanitize($_COOKIE); } public static function sanitize($value) { if (is_array($value) OR is_object($value)) { foreach ($value as $key => $val) { $value[$key] = self::sanitize($val); } } elseif (is_string($value)) { if (self::$magic_quotes === TRUE) { $value = stripslashes($value); } if (strpos($value, "\r") !== FALSE) { $value = str_replace(array("\r\n", "\r"), "\n", $value); } } return $value; } public function __set($k,$v) { $this->$k = $v; } public function __call($method,$arg) { echo '错误指定页面'; print_r($arg); //错误指定页面 } public static function __callStatic($method,$arg) { print_r($arg); //错误指定页面 静态的好像不太可能 先写这儿了 } public function assign($key,$value) { $this->data[$key] = $value; } //引入模板 public function display($template,$ext = '.html') { $template_path = $template.$ext; if(file_exists($template_path)){ foreach ($this->data as $k=>$v){ $this->__set($k,$v); } include $template_path; } } } //控制器 class IndexAction extends ProductInterface { public function index() { print_r( $_GET); //$body = file_get_contents('php://input'); //print_r($body); //结果为 member_id=1234567 enctype="multipart/form-data" // print_r($_POST); //结果为 Array ( [member_id] => 1234567 ) //$model= new Article('article'); // $arr= $model->select('SELECT * FROM article limit 2'); //print_r($arr); } public function admin($array) { $model= new Article('article'); $array=array(); $array['rec']='admins'; $array['pos']='李斯'; $array['content']='hellow world'; echo $model->add($array); } } ///控制器2 class AdminAction extends ProductInterface { public function index($array) { echo __method__.'方法'; } } class Factory { protected static $ins=null; protected function __construct(){ ob_start(); //打开缓冲区 static::autoLoad(); register_shutdown_function(array('Factory','last')); //程序执行完后执行 } public static function getIns($url){ if(self::$ins instanceof self ){ self::$ins->execute($url); }else{ self::$ins = new self(); self::$ins->execute($url); } } protected function set_router($uri) { /* $uri='index/admin'; // $route_regex='#^(?:(?P[^/.,;?\n]++)(?:/(?P[^/.,;?\n]++)(?:/(?P[^/.,;?\n]++))?)?)?$#uD'; //$route_regex='#^captcha(?:/(?P[^/.,;?\n]++))?$#uD'; $route_regex='#^(?:(?P<controller>[^/.,;?\n]++)(?:/(?P<action>[^/.,;?\n]++)(?:/(?P<id>[^/.,;?\n]++))?)?)?$#uD'; if ( ! preg_match($route_regex, $uri, $matches)) { echo '没有匹配上'; } else { print_r($matches); } */ $arr=array(); if (strpos($uri,'?') === false) { $pathinfo=array(); if (!empty($_SERVER['PATH_INFO'])) { $arg=trim($_SERVER['PATH_INFO'],'/'); } else if ($request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)){ //有效的URL路径发现,设置它。 $arg= trim($request_uri,'/'); } if(stripos($arg,'/') !== false) { $pathinfo=explode('/',$arg); } $arr['ctrolloer']= isset($pathinfo[0])? $pathinfo[0] : 'index' ; array_shift($pathinfo); $arr['action']= isset($pathinfo[0])?$pathinfo[0]:'index' ; array_shift($pathinfo); $num=count($pathinfo); for ($i=0;$i<$num;$i+=2) { $arr['param'][$pathinfo[$i]]=$pathinfo[$i+1]; } return $arr; } else { $ln=parse_url($uri); parse_str($ln['query'],$array); $arr['ctrolloer']=$array['m'] ? strtolower($array['m']) : 'index'; $arr['action']=$array['c'] ? strtolower($array['c']) : 'index'; unset($array['m']); unset($array['c']); $arr['param']=$array; return $arr; } } protected function execute($url) { $arr= self::$ins->set_router($url); $_GET = isset($arr['param']) ? $arr['param'] : array(); $ProductType = ucfirst($arr['ctrolloer']).'Action'; if (class_exists($ProductType)) { $p=new $ProductType(); $p->$arr['action']($arr); } else { throw new Exception("Error Processing Request", 1); } } public static function last()// echo '脚本执行完了'. PHP_EOL; { $info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info $file=fopen($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'indexs.html','w'); ///打开文件 指定缓存目录 fwrite($file,$info); //写入信息到info.txt fclose($file); //关闭文件info.txt //ob_end_clean(); ob_end_flush(); flush(); } static public function loadFile($className) { $dir=array(); $dir[0]=__ROOT__.'/application/'; //指定多个目录 $dir[1]=__ROOT__.'/module/'; $file_arr=self::find_file($dir,$className); foreach($file_arr as $value){ if(is_file($value) ){ return include_once $value; }else{ throw new \Exception('找不到'.$className.'类'); } } } public static function find_file($paths=array(),$name) { $name=ucfirst($name).'.php'; $found=array(); foreach ($paths as $dir){ if (is_file($dir.$name)){ $found[] = $dir.$name; } } return $found; } // 注册自动装载机 static public function autoLoad() { spl_autoload_register( array(__CLASS__,'loadFile') ); } // 注册自动装载机2 //如有必要注册多个自动加载函数 static public function autoLoad2() { spl_autoload_register( array(__CLASS__,'loadFile2') ); } } abstract class DB{ public $db=NULL; public $table=NULL; public $config=array( 'dsn'=>'mysql:dbname=test;host=127.0.0.1', 'user'=>'root', 'password'=>'root', 'charset'=>'utf8', 'persistent'=>false //持久性链接 ); public $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES ", ); public function __construct($table){ $this->table=$table; $this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= $this->config ['charset']; if($this->config ['persistent']){ $this->options[PDO::ATTR_PERSISTENT] = true; } try { // 长连接,如有需要将array(PDO::ATTR_PERSISTENT=>true) 作为第四个参数 $this->db=$pdo = new \PDO ( $this->config ['dsn'],$this->config ['user'],$this->config ['password'],$this->options); //$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT); //不显示错误 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//显示警告错误,并继续执行 $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//产生致命错误,PDOException //$this->db->exec('set names utf8'); } catch ( \Exception $e ) { throw new \Exception ( $e->getMessage () ); } } public function query($sql){ return $re=$this->db->query($sql); } public function select($sql) /*查询*/ { $re=$this->query($sql); return $re->fetchAll(); } public function add($arr=array()){ /*添加*/ $sql = 'insert into ' . $this->table . ' (' . implode(',',array_keys($arr)) . ')'; $sql .= " values ('"; $sql .= implode("','",array_values($arr)); $sql .= "')"; $stmt = $this->db->prepare($sql); $stmt->execute($arr); echo $this->db->lastinsertid(); } public function update($arr,$where = ' where 1 limit 1'){ /*修改*/ //$sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId"; $sql = 'update ' . $this->table .' set '; foreach($arr as $k=>$v) { $sql .= $k . "='" . $v ."',"; } $sql = rtrim($sql,','); $sql .= $where; $stmt = $this->db->prepare($sql); $stmt->execute($arr); return $stmt->rowCount(); } public function delete($sql){ /*删除*/ $stmt = $this->db->prepare($sql); $stmt->execute(); return $stmt->rowCount(); } } ////可以每一张表一个类 统一继承DB类。。。。。 class Article extends DB{ } ?> <script> var x=1,y=z=0; function add(n){ n=n+1; } y=add(x); function add(n){ n=n+3; } z=add(x); </script>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pengenalan Dalam dunia digital yang berkembang pesat hari ini, adalah penting untuk membina aplikasi WEB yang mantap, fleksibel dan boleh diselenggara. Seni bina PHPmvc menyediakan penyelesaian yang ideal untuk mencapai matlamat ini. MVC (Model-View-Controller) ialah corak reka bentuk yang digunakan secara meluas yang memisahkan pelbagai aspek aplikasi kepada komponen bebas. Asas seni bina MVC Prinsip teras seni bina MVC ialah pengasingan kebimbangan: Model: merangkum data dan logik perniagaan aplikasi. Lihat: Bertanggungjawab untuk membentangkan data dan mengendalikan interaksi pengguna. Pengawal: Menyelaras interaksi antara model dan pandangan, mengurus permintaan pengguna dan logik perniagaan. Seni Bina PHPMVC Seni bina phpMVC mengikut corak MVC tradisional tetapi juga memperkenalkan ciri khusus bahasa. Berikut ialah PHPMVC

Seni bina MVC (Model-View-Controller) adalah salah satu corak yang paling popular dalam pembangunan PHP kerana ia menyediakan struktur yang jelas untuk mengatur kod dan memudahkan pembangunan aplikasi WEB. Walaupun prinsip asas MVC mencukupi untuk kebanyakan aplikasi web, ia mempunyai beberapa had untuk aplikasi yang perlu mengendalikan data kompleks atau melaksanakan fungsi lanjutan. Mengasingkan lapisan model Mengasingkan lapisan model ialah teknik biasa dalam seni bina MVC lanjutan. Ia melibatkan memecahkan kelas model kepada subkelas yang lebih kecil, setiap satu memfokuskan pada fungsi tertentu. Contohnya, untuk aplikasi e-dagang, anda mungkin menguraikan kelas model utama kepada model pesanan, model produk dan model pelanggan. Pemisahan ini membantu meningkatkan kebolehselenggaraan dan kebolehgunaan semula kod. Gunakan suntikan pergantungan

Corak MVC (Model-View-Controller) ialah corak reka bentuk perisian yang biasa digunakan yang boleh membantu pembangun mengatur dan mengurus kod dengan lebih baik. Corak MVC membahagikan aplikasi kepada tiga bahagian: Model, View dan Controller, setiap bahagian mempunyai peranan dan tanggungjawabnya sendiri. Dalam artikel ini, kita akan membincangkan cara melaksanakan corak MVC menggunakan PHP. Model Model A mewakili data aplikasi dan pemprosesan data. secara amnya,

Rangka kerja SpringMVC dinyahsulit: Mengapakah ia begitu popular, contoh kod khusus diperlukan Pengenalan: Dalam bidang pembangunan perisian hari ini, rangka kerja SpringMVC telah menjadi pilihan yang sangat popular di kalangan pembangun. Ia adalah rangka kerja Web berdasarkan corak seni bina MVC, menyediakan kaedah pembangunan yang fleksibel, ringan dan cekap. Artikel ini akan menyelidiki daya tarikan rangka kerja SpringMVC dan menunjukkan kuasanya melalui contoh kod tertentu. 1. Kelebihan rangka kerja SpringMVC Kaedah konfigurasi fleksibel Spr

Dalam pembangunan Web, MVC (Model-View-Controller) ialah corak seni bina yang biasa digunakan untuk memproses dan mengurus data aplikasi, antara muka pengguna dan logik kawalan. Sebagai bahasa pembangunan web yang popular, PHP juga boleh menggunakan seni bina MVC untuk mereka bentuk dan membina aplikasi web. Artikel ini akan memperkenalkan cara menggunakan seni bina MVC untuk mereka bentuk projek dalam PHP, dan menerangkan kelebihan dan langkah berjaga-jaganya. Apa itu MVCMVC ialah corak seni bina perisian yang biasa digunakan dalam aplikasi web. MV

Membangunkan MVC dengan rangka kerja PHP8: Panduan langkah demi langkah Pengenalan: MVC (Model-View-Controller) ialah corak seni bina perisian yang biasa digunakan yang digunakan untuk memisahkan logik, data dan antara muka pengguna aplikasi. Ia menyediakan struktur yang memisahkan aplikasi kepada tiga komponen berbeza untuk pengurusan dan penyelenggaraan kod yang lebih baik. Dalam artikel ini, kami akan meneroka cara menggunakan rangka kerja PHP8 untuk membangunkan aplikasi yang mematuhi corak MVC. Langkah Satu: Fahami Corak MVC Sebelum mula membangunkan aplikasi MVC, I

Beego ialah rangka kerja aplikasi web berdasarkan bahasa Go, yang mempunyai kelebihan prestasi tinggi, kesederhanaan dan kemudahan penggunaan serta kebolehskalaan yang tinggi. Antaranya, seni bina MVC ialah salah satu konsep reka bentuk teras rangka kerja Beego Ia boleh membantu pembangun mengurus dan mengatur kod dengan lebih baik, meningkatkan kecekapan pembangunan dan kualiti kod. Artikel ini akan menyelidiki seni bina MVC Beego supaya pembangun dapat memahami dan menggunakan rangka kerja Beego dengan lebih baik. 1. Pengenalan kepada seni bina MVC MVC, atau Model-View-Controller, adalah perkara biasa

Membangunkan MVC dengan rangka kerja PHP8: Konsep dan teknik penting yang perlu diketahui oleh pemula Pengenalan: Dengan perkembangan pesat Internet, pembangunan Web memainkan peranan penting dalam industri pembangunan perisian masa kini. PHP digunakan secara meluas untuk pembangunan web, dan terdapat banyak rangka kerja matang yang membantu pembangun membina aplikasi dengan lebih cekap. Antaranya, seni bina MVC (Model-View-Controller) adalah salah satu corak yang paling biasa dan digunakan secara meluas. Artikel ini akan memperkenalkan cara pemula boleh menggunakan rangka kerja PHP8 untuk membangunkan aplikasi MVC.
