<?php /** * dao abstrract * @author einar_he@76rens.com */ abstract class Gospel_Dao_Abstract implements Gospel_Dao_Interface{ /** * 表名稱 * * @var string */ protected $_table = ''; /** * 數(shù)據(jù)庫(kù)名 * * @var string */ protected $_database = ''; /** * construct */ public function __construct(){ $this->init(); } /** * 初始化操作 */ abstract protected function init(); /** * 獲取db源 * * @param string $rule * @return Gospel_Db_Adapter */ public function getAdapter($rule='master'){ return Gospel_Db_Adapter::getInstance($rule); } /** * 獲取db名稱 * * @param string $rule * @return string */ public function getDatabase($rule=''){ return $this->_database; } /** * 活去表名稱 * * @param string $rule * @return string */ public function getTable($rule=''){ return $this->_table; } /* 獲取多條記錄 * @see Gospel/Dao/Gospel_Dao_Interface#getItems($rule, $where, $sort, $offset, $limit, $pager, $flag) */ public function getItems($rule, $where, $sort='', $offset, $limit, $pager=0, $flag='slave'){ $return = array(); if($where){ $query = 'SELECT * FROM '; $query .= $this->getTable($rule); $query .= ' WHERE '.$this->getWhere($where); if($sort){ $query .= ' ORDER BY '.$sort; } $page = $page>0?$page:1; $psize = $psize>0?$psize:10; $offset = ($page-1)*$psize; $query .= ' LIMIT '.$offset.','.$psize; $data = $this->getAdapter($flag)->queryAll($query); if($pagination){ $return['data'] = array(); if($data){ $rtotal = $this->getWhereTotal($rule, $where); $return['data'] = $data; $return['pager'] = array( 'page'=>$page, 'psize'=>$psize, 'rtotal'=>$rtotal, 'ptotal'=>ceil($rtotal/$psize) ); }else{ $return['pager'] = array( 'page'=>$page, 'psize'=>$psize, 'rtotal'=>0, 'ptotal'=>0 ); } }else{ $return = $data; } } return $return; } /* 獲取單條記錄 * @see Gospel/Dao/Gospel_Dao_Interface#getItem($rule, $where, $sort, $flag) */ public function getItem($rule, $where, $sort='', $flag='slave'){ $return = array(); if($where){ $query = 'SELECT * FROM '; $query .= $this->getTable($rule); $query .= ' WHERE '.$this->getWhere($where); if($sort != ''){ $query .= ' ORDER BY '.$sort; } $query .= ' LIMIT 0,1'; $return = $this->getAdapter($flag)->queryRow($query); } return $return; } /* 獲取表字段信息 * @see Gospel/Dao/Gospel_Dao_Interface#getTableFields($rule, $flag) */ public function getTableFields($rule, $flag='master'){ return $this->getAdapter($flag)->getTableFields($this->getTable($rule)); } /* 更新記錄 * @see Gospel/Dao/Gospel_Dao_Interface#update($rule, $where, $set) */ public function update($rule, $where, array $set){ $return = 0; if($where && $set){ $query = 'UPDATE `'.$this->getTable($rule); $query .= '` SET '.$this->getSet($set); $query .= ' WHERE '.$this->getWhere($where); if($query){ $return = $this->getAdapter('master')->queryUpdate($query); } } return $return; } /* 統(tǒng)計(jì)記錄數(shù) * @see Gospel/Dao/Gospel_Dao_Interface#getWhereTotal($rule, $where, $flag) */ public function getWhereTotal($rule, $where, $flag='slave'){ $return = 0; if($where){ $sql = 'SELECT COUNT(*) FROM '.$this->getTable($rule); $sql .= ' WHERE '.$this->getWhere($where); $return = $this->getAdapter()->queryTotal($sql); } return $return; } /* 添加記錄 * @see Gospel/Dao/Gospel_Dao_Interface#add($rule, $row) */ public function add($rule, array $row){ $return = 0; if($row){ $keys = ''; $values = ''; foreach($row as $key=>$value){ $keys .= '`'.$key.'`,'; if(substr($key, 0, 1) == 'n'){ $values .= $value.','; }else{ $values .= "'".$value."',"; } } $keys = substr($keys, 0, -1); $values = substr($values, 0, -1); $query = 'INSERT INTO `'; $query .= $this->getTable($rule); $query .= '`('.$keys.') VALUES('; $query .= $values.')'; $return = $this->getAdapter('master')->queryUpdate($query); } return $return; } /* 刪除記錄 * @see Gospel/Dao/Gospel_Dao_Interface#del($rule, $where, $lines) */ public function del($rule, $where, $lines=1){ $return = 0; if($where){ $query = 'DELETE FROM `'; $query .= $this->getTable($rule); $query .= '` WHERE '.$this->getWhere($where); $query .= ' LIMIT '.$lines; $return = $this->getAdapter('master')->queryUpdate($query); } return $return; } /** * 格式化where語(yǔ)句 * * @param string|array $where * @return string */ private function getWhere($where){ $return = ''; if(is_array($where)){ $return .= implode(' AND ', $where); }else{ $return .= $where; } return $return; } /** * 格式化成更新語(yǔ)句格式 * * @param array $set * @return String */ private function getSet(array $set){ $return = ''; if($set){ foreach ($set as $key=>$val){ if (substr($key, 0, 1) != 'n'){ $return .= '`'.$key."`='".$val."',"; }else{ $mk = substr($val, 0, 1); if(is_numeric($mk)){ $return .= '`'.$key."`=".$val.","; }else{ $v = intval(substr($val, 1)); if($mk == '+'){ $return .= '`'.$key.'`=`'.$key.'`+'.$v.','; }elseif($mk == '-'){ $return .= '`'.$key.'`=`'.$key.'`-'.$v.','; } } } } $return = substr($return, 0, -1); } return $return; } } //end

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP ?? ??? ?? ???? ?? ? ????? ??? ?????. 1. ?? ??? ??? ??? ??? ? ? ??? ??? ??? ?? ?? ??? ???? ???????. 2. ?? ??? ???? ???? ? ?? ????? ?? ?? ?? ??? ?????. 3. $ _get ? $ _post? ?? Hyperglobal ??? ?? ???? ?? ??? ? ??? ??? ??????? ???????. 4. ?? ?? ?? ???? ?? ?? ?? ??? ?????? ?? ??? ??? ?? ??? ???????. ??? ??? ????? ??? ??? ?? ???? ????? ? ??? ? ? ????.

PHP ?? ???? ???? ????? ?? ? ??? ???? ?? ?? ? ??? ???? ?? ??? ?????? ??? ??? ? ? ???????. 1. ??? ?? CSRF? ???? ?? ??? ??? ???? ?????? ??? ???? FINFO_FILE? ?? ?? MIME ??? ?????. 2. ??? ??? ??? ???? ??? ?? ??? ?? ? WEB ????? ??? ???? ??????. 3. PHP ?? ??? ?? ? ?? ???? NGINX/APACHE? ??? ????? ?? ???? ?????. 4. GD ?????? ??? ? ?? ???? ??? ?? ??? ?? ????.

PHP ?? ???? ? ?? ???? ??? ????. 1. // ?? #? ???? ? ?? ??? ???? // ???? ?? ????. 2. ?? /.../ ?? ?? ?? ??? ????? ?? ? ?? ??? ?? ? ? ????. 3. ?? ?? ?? / if () {} /? ?? ?? ??? ????? ??? ?? ?? ?? ??? ???? ????? ???? ??? ?? ???? ???? ??? ? ??? ??????.

Ageneratorinphpisamemory- ???? Way-Erate-Overgedatasetsetsbaluesoneatimeatimeatimeatimallatonce.1.generatorsuseTheyieldKeywordTocroadtOpvaluesondemand, RetingMemoryUsage.2

PHP ??? ???? ??? ??? ??? ????? ????. ??? ????? ?? ???? ??? "?? ? ?"??? "?"? ???????. 1. ??? ? ??? ??? DocBlock (/*/)? ?? ?? ??? ???? ??? ? ?? ???? ??????. 2. JS ??? ???? ?? ???? ??? ?? ??? ??? ?????. 3. ??? ?? ?? ?? ??? ???? ????? ????? ???? ?? ????? ???? ? ??????. 4. Todo ? Fixme? ????? ???? ? ? ??? ??? ???? ?? ?? ? ??? ???????. ??? ???? ?? ??? ??? ?? ?? ?? ???? ???? ? ????.

tolearnpheffectical, startBysetTupaloCalserErverEnmentUsingToolslikexamppandacodeeditor -likevscode.1) installxamppforapache, mysql, andphp.2) useacodeeditorforsyntaxsupport.3)) 3) testimplephpfile.next, withpluclucincludechlucincluclucludechluclucled

PHP??? ???? ??? ?? ?? ????? ???? ??? ?? ??? ??? ?? ? ??? ??? ???? ?????. ???? 0?? ???? ?? ??? ???? ? ?? ???? ?? ?? ? ? ????. MB_SUBSTR? ?? ??? ??? ???????. ? : $ str = "hello"; echo $ str [0]; ?? H; ??? MB_SUBSTR ($ str, 1,1)? ?? ??? ??? ??? ??????. ?? ???????? ???? ??? ???? ?? ???? ?? ?? ???? ?????? ??? ????? ?? ??? ?? ??? ???? ???? ?? ????.

toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1. ??, downloadandinstallxAmpp, selectComponents, startApache ? placefilesinhtdocs.2
