Subversion Repositories php-qbpwcf

Rev

Rev 190 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 190 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2014~2025 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
11
    it under the terms of the GNU General Public License as published by
Line 92... Line 92...
92
 
92
 
93
		#回傳結果
93
		#回傳結果
94
		return $result;
94
		return $result;
95
 
95
 
96
		}#function __callStatic end
96
		}#function __callStatic end
97
		
97
 
98
	/*
98
	/*
99
	#函式說明:
99
	#函式說明:
100
	#多層if判斷.
100
	#多層if判斷.
101
	#回傳結果:
101
	#回傳結果:
102
	#$result["status"],字串,"true"代表執行正常;"false"代表執行異常.
102
	#$result["status"],字串,"true"代表執行正常;"false"代表執行異常.
Line 121... Line 121...
121
	#無.
121
	#無.
122
	#備註:
122
	#備註:
123
	#無.
123
	#無.
124
	*/
124
	*/
125
	public static function nestedIf(&$conf){
125
	public static function nestedIf(&$conf){
126
	
126
 
127
		#初始化要回傳的結果
127
		#初始化要回傳的結果
128
		$result=array();
128
		$result=array();
129
 
129
 
130
		#取得當前執行的函數名稱
130
		#取得當前執行的函數名稱
131
		$result["function"]=__FUNCTION__;
131
		$result["function"]=__FUNCTION__;
Line 166... Line 166...
166
 
166
 
167
			#回傳結果
167
			#回傳結果
168
			return $result;
168
			return $result;
169
 
169
 
170
			}#if end
170
			}#if end
171
			
171
 
172
		#函式說明:
172
		#函式說明:
173
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
173
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
174
		#回傳結果:
174
		#回傳結果:
175
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
175
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
176
		#$result["error"],執行不正常結束的錯訊息陣列.
176
		#$result["error"],執行不正常結束的錯訊息陣列.
Line 221... Line 221...
221
		#array_keys=>http://php.net/manual/en/function.array-keys.php
221
		#array_keys=>http://php.net/manual/en/function.array-keys.php
222
		#備註:
222
		#備註:
223
		#無.
223
		#無.
224
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
224
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
225
		unset($conf["variableCheck::checkArguments"]);
225
		unset($conf["variableCheck::checkArguments"]);
226
	
226
 
227
		#如果執行異常
227
		#如果執行異常
228
		if($checkArguments["status"]==="false"){
228
		if($checkArguments["status"]==="false"){
229
		
229
 
230
			#設置執行異常
230
			#設置執行異常
231
			$result["status"]="false";
231
			$result["status"]="false";
232
			
232
 
233
			#設置執行錯誤
233
			#設置執行錯誤
234
			$result["error"]=$checkArguments;
234
			$result["error"]=$checkArguments;
235
			
235
 
236
			#回傳結果
236
			#回傳結果
237
			return $result;
237
			return $result;
238
		
238
 
239
			}#if end
239
			}#if end
240
			
240
 
241
		#如果檢查不通過
241
		#如果檢查不通過
242
		if($checkArguments["passed"]==="false"){
242
		if($checkArguments["passed"]==="false"){
243
		
243
 
244
			#設置執行異常
244
			#設置執行異常
245
			$result["status"]="false";
245
			$result["status"]="false";
246
			
246
 
247
			#設置執行錯誤
247
			#設置執行錯誤
248
			$result["error"]=$checkArguments;
248
			$result["error"]=$checkArguments;
249
			
249
 
250
			#回傳結果
250
			#回傳結果
251
			return $result;
251
			return $result;
252
		
252
 
253
			}#if end
253
			}#if end
254
		
254
 
255
		#預設通過判斷的識別
255
		#預設通過判斷的識別
256
		$result["pass"]="true";
256
		$result["pass"]="true";
257
		
257
 
258
		#針對每個要判斷的變數
258
		#針對每個要判斷的變數
259
		foreach($conf["varToControlLeft"] as $index => $varLeftName){
259
		foreach($conf["varToControlLeft"] as $index => $varLeftName){
260
		
260
 
261
			#判斷為字串或陣列
261
			#判斷為字串或陣列
262
			switch(gettype($varLeftName)){
262
			switch(gettype($varLeftName)){
263
			
263
 
264
				#如果是字串
264
				#如果是字串
265
				case "string":
265
				case "string":
266
			
266
 
267
					#如果要判斷的變數不存在
267
					#如果要判斷的變數不存在
268
					if(!isset($conf["get_defined_vars"][$varLeftName])){
268
					if(!isset($conf["get_defined_vars"][$varLeftName])){
269
					
269
 
270
						#設置不通過的識別
270
						#設置不通過的識別
271
						$result["pass"]="false";
271
						$result["pass"]="false";
272
						
272
 
273
						#記錄用於判斷的varLeft變數名稱
273
						#記錄用於判斷的varLeft變數名稱
274
						$result["reason"]["varLeftName"]=$varLeftName;
274
						$result["reason"]["varLeftName"]=$varLeftName;
275
						
275
 
276
						#結束 foreach
276
						#結束 foreach
277
						break 2;
277
						break 2;
278
					
278
 
279
						}#if end
279
						}#if end
280
						
280
 
281
					#記錄用於判斷的varLeft變數數值
281
					#記錄用於判斷的varLeft變數數值
282
					$varLeftVal=&$conf["get_defined_vars"][$varLeftName];
282
					$varLeftVal=&$conf["get_defined_vars"][$varLeftName];
283
			
283
 
284
					#跳出 switch
284
					#跳出 switch
285
					break;
285
					break;
286
					
286
 
287
				#如果是array
287
				#如果是array
288
				case "array":
288
				case "array":
289
				
289
 
290
					#初始化儲存 $varToControlLeft 父元素的變數
290
					#初始化儲存 $varToControlLeft 父元素的變數
291
					$parentVarOfVarLeft=$conf["get_defined_vars"];
291
					$parentVarOfVarLeft=$conf["get_defined_vars"];
292
				
292
 
293
					#針對每個元素
293
					#針對每個元素
294
					foreach($varLeftName as $key){
294
					foreach($varLeftName as $key){
295
						
295
 
296
						#如果要判斷的變數不存在
296
						#如果要判斷的變數不存在
297
						if(!isset($parentVarOfVarLeft[$key])){
297
						if(!isset($parentVarOfVarLeft[$key])){
298
						
298
 
299
							#設置不通過的識別
299
							#設置不通過的識別
300
							$result["pass"]="false";
300
							$result["pass"]="false";
301
						
301
 
302
							#記錄用於判斷的varLeft變數名稱
302
							#記錄用於判斷的varLeft變數名稱
303
							$result["reason"]["varLeftName"]=$varLeftName;
303
							$result["reason"]["varLeftName"]=$varLeftName;
304
						
304
 
305
							#結束 foreach
305
							#結束 foreach
306
							break 3;
306
							break 3;
307
						
307
 
308
							}#if end
308
							}#if end
309
					
309
 
310
						#執行到這代表存在
310
						#執行到這代表存在
311
					
311
 
312
						#更新 $varToControlLeft 父元素的變數
312
						#更新 $varToControlLeft 父元素的變數
313
						$parentVarOfVarLeft=$parentVarOfVarLeft[$key];
313
						$parentVarOfVarLeft=$parentVarOfVarLeft[$key];
314
					
314
 
315
						}#foreach end
315
						}#foreach end
316
						
316
 
317
					#記錄用於判斷的varLeft變數數值
317
					#記錄用於判斷的varLeft變數數值
318
					$varLeftVal=&$parentVarOfVarLeft;
318
					$varLeftVal=&$parentVarOfVarLeft;
319
				
319
 
320
					#跳出switch
320
					#跳出switch
321
					break;
321
					break;
322
					
322
 
323
				#如果是其他結果
323
				#如果是其他結果
324
				default:
324
				default:
325
				
325
 
326
					#設置執行異常
326
					#設置執行異常
327
					$result["status"]="false";
327
					$result["status"]="false";
328
					
328
 
329
					#設置執行錯誤
329
					#設置執行錯誤
330
					$result["error"][]="element of param varToControlLeft should be string or array";
330
					$result["error"][]="element of param varToControlLeft should be string or array";
331
					
331
 
332
					#設置執行錯誤
332
					#設置執行錯誤
333
					$result["error"][]=$checkArguments;
333
					$result["error"][]=$checkArguments;
334
					
334
 
335
					#回傳結果
335
					#回傳結果
336
					return $result;
336
					return $result;
337
			
337
 
338
				}#switch end
338
				}#switch end
339
			
339
 
340
			#判斷條件
340
			#判斷條件
341
			$condition=$conf["conditions"][$index];
341
			$condition=$conf["conditions"][$index];
342
			
342
 
343
			#記錄用於判斷的varRight變數名稱
343
			#記錄用於判斷的varRight變數名稱
344
			$varRightVal=&$conf["varToControlRight"][$index];
344
			$varRightVal=&$conf["varToControlRight"][$index];
345
			
345
 
346
			#儲存要給eval運行的內容
346
			#儲存要給eval運行的內容
347
			$evalStr="return \$varLeftVal".$condition."\$varRightVal;";
347
			$evalStr="return \$varLeftVal".$condition."\$varRightVal;";
348
			
348
 
349
			#debug
349
			#debug
350
			#var_dump(__LINE__,$evalStr);
350
			#var_dump(__LINE__,$evalStr);
351
			
351
 
352
			#如果不滿足條件
352
			#如果不滿足條件
353
			if(!(eval($evalStr))){
353
			if(!(eval($evalStr))){
354
				
354
 
355
				#設置不通過的識別
355
				#設置不通過的識別
356
				$result["pass"]="false";
356
				$result["pass"]="false";
357
				
357
 
358
				#記錄用於判斷的varLeft變數名稱
358
				#記錄用於判斷的varLeft變數名稱
359
				$result["reason"]["varLeftName"]=$varLeftName;
359
				$result["reason"]["varLeftName"]=$varLeftName;
360
				
360
 
361
				#記錄用於判斷的varLeft變數數值
361
				#記錄用於判斷的varLeft變數數值
362
				$result["reason"]["varLeftVal"]=$varLeftVal;
362
				$result["reason"]["varLeftVal"]=$varLeftVal;
363
				
363
 
364
				#記錄用於判斷的varRight資訊
364
				#記錄用於判斷的varRight資訊
365
				$result["reason"]["varRightVal"]=$varRightVal;
365
				$result["reason"]["varRightVal"]=$varRightVal;
366
				
366
 
367
				#記錄用於判斷的condition資訊
367
				#記錄用於判斷的condition資訊
368
				$result["reason"]["condition"]=$condition;
368
				$result["reason"]["condition"]=$condition;
369
				
369
 
370
				#結束 foreach
370
				#結束 foreach
371
				break;
371
				break;
372
			
372
 
373
				}#if end
373
				}#if end
374
		
374
 
375
			}#foreach end
375
			}#foreach end
376
	
376
 
377
		#設置執行正常
377
		#設置執行正常
378
		$result["status"]="true";
378
		$result["status"]="true";
379
	
379
 
380
		#回傳結果
380
		#回傳結果
381
		return $result;
381
		return $result;
382
	
382
 
383
		}#function nestedIf end
383
		}#function nestedIf end
384
 
384
 
385
	}#class 
-
 
386
385
	}#class
-
 
386