首頁 >後端開發 >php教程 >什麼是優雅程式設計?什麼是優雅代碼?

什麼是優雅程式設計?什麼是優雅代碼?

WBOY
WBOY原創
2016-07-25 08:48:561049瀏覽
個人理解:
所謂優雅程式就是喝著咖啡,摸著鍵盤,想著業務;
優雅程式碼的定義是:
1、盡可能的少單雙引號;
2、不要嵌套;
3、命名全是最基本的英文單字;
4、程式碼像英文一樣,是一段一段的;
5、一個應用程式碼組織調理清晰,最好是樹關係,網關係少用。

下邊是一個sql查詢的連貫操作實現方法,請大家指導指導!
  1. /**
  2. * DB連貫運算、sql條件建構
  3. * From: EQPHP FrameWork
  4. * Author: art_youth
  5. * E-mail: 258122391@qq.com
  6. * E-mail: 258122391@qq.com
  7. * Pub data: 20112-120112 09
  8. */
  9. 類別查詢{
  10. public $sql=' ' ;
  11. public $option=array();
  12. static $keyword=array('select','from','where','group','having','order','limit') ;
  13. // 初始化查詢參數
  14. function __construct($table,$prefix=''){
  15. $this->option['from']=$prefix.$ table;
  16. }
  17. // 建構參數
  18. function __call($method,$param){
  19. if (in_array($method,self::$keyword)) {
  20. if (in_array($method,self::$keyword)) {
  21. $this->option[$method]=$param[0];
  22. return $this;
  23. }
  24. }
  25. // 輸出查詢結果
  26. function out($mode='sql',$rs_count=0,$now_page=1,$page_size=20){
  27. $this->sql='';
  28. foreach (self::$關鍵字作為$ key) {
  29. $value=($key == 'group' || $key == 'order') ? $鑰匙。 by' : $key;
  30. if ($key === 'where' && is_array($this->option['where'])) {
  31. $this->option[' where' ]=self::condition($this->option['where']);
  32. }
  33. if (isset($this->option[$key]) && 修剪( $this-> option[$key])) {
  34. $this->sql.=' '.$value.' '.trim($this->選項[$key]);
  35. }
  36. unset($this->選項[$key]);
  37. }
  38. $this- >sql=trim($this->sql);
  39. switch($mode){
  40. case 'rs':
  41. return db::rs($this->sql) ;
  42. case 'list':
  43. return db::rs_list($this->sql);
  44. case ' page':
  45. return db::page_list($this->sql, $rs_count,$now_page,$page_size);
  46. default:
  47. return $this->sql;
  48. }
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. //建構sql查詢條件
  62. static function condition($data){
  63. //處理邏輯連接符
  64. $logic=' and ';
  65. if (isset($data['logic'])) {
  66. $邏輯=' '.$data['邏輯'].' ';
  67. unset($data['logic']);
  68. }
  69. //處理字串(本生sql)
  70. if (isset($data['query']) )) {
  71. $condition[]='('.$data[ 'query'].')';
  72. unset($data['query']);
  73. }
  74. //處理條件資料
  75. foreach ($data as $key=> $value) {
  76. $condition[]='('.self::parse_expression($key,$value).')' ;
  77. }
  78. return implode($logic,$condition );
  79. }
  80. //解析表達式
  81. private static function parse_expression($key, $value){
  82. if (is_numeric($value)) return $key. '='.$value;
  83. if (is_string($value)) return $key.'="'.$value.' "';
  84. if (is_array($value)) {
  85. //基本條件查詢
  86. if (preg_match('/^(eq|neq|gt|egt|lt|elt)$ /i',$value[0])) {
  87. is_string($value [1]) && $value[1]='"'.$value[1].'"';
  88. $operator= array('eq'=>'=','neq'=>' ','gt'=>'>','egt'=>'>=','lt '=>'' return $key.$ operator[$value[0]].$value[1];
  89. }
  90. //in範圍查找
  91. if (in_array($value[0],array('in',' not in'))) {
  92. is_array($value[1]) && $value[1]=implode(',',$value[1]);
  93. 回傳$key。 ' '.$value[0].'('.$value[1].')';
  94. }
  95. //區間查找
  96. if (in_array($value[0], array('之間','不在之間'))) {
  97. $param=is_string($value[1]) ? explode(',',$value[1]) : $value[1];
  98. 回傳$key。 ' '.$值[0]。 ' '.$參數[0]。 ' and '.$param[1];
  99. }
  100. //like 模糊匹配
  101. if (in_array($value[0],array('喜歡','不喜歡')) ) {
  102. if (is_array($value[1])) {
  103. $buffer=array();
  104. foreach ($value[1] as $param) { $buffer[]= $鑰匙。 ' '.$值[0]。 ' "'.$param.'"'; } $logic=isset($value[2]) ? ' '.$value[2]。 ' ' : ' 或'; return implode($logic,$buffer); } if (strpos($key,'|') !== false) { $ buffer=array(); foreach (explode('|',$key) as $field) { $buffer[]='('.$field.' '.$value[0]. ' "'.$value[1].'")'; } return implode(' 或',$buffer); }
  105. if (strpos($key,'&') !== false) {
  106. $buffer=array();
  107. foreach (explode('&',$key) as $field ) {
  108. $buffer[]='('.$field.' '.$value[0].' "'.$value[1].'")';
  109. }
  110. 返回內爆(' 和',$buffer);
  111. }
  112. 回傳$key。 '.$值[0]。 ' "'.$value[1].'"';
  113. }
  114. // 數學區間查詢(1,9)/[2,3)
  115. if ($value[0] = == '範圍') {
  116. $logic=isset($value[2]) ? ' '.$value[2]。 ' ' : ' && ';
  117. $operator=array('('=>'>','['=>'>=',')'=>'' preg_match('/^((|[)(.*),(.*)()|])$/',$value[1],$param );
  118. $result ='';
  119. isset($param[2]) && $result.=$key.$operator[$param[1]].$param[2];
  120. isset ($param[4]) && $result.=$logic.$key.$operator[$param[4]].$param[3];
  121. return $result;
  122. }
  123. return '';
  124. }
  125. }
  126. //資源回收
  127. function __destruct(){
  128. unset($this->option,$this-> ;sql);
  129. }
  130. }
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn