感覺是一種的抽風的寫法,也可能是吸毒了太興糞的寫法,不知為了啥。很多人就是不喜歡用常規出牌,總是在那裡搞手銀的事,這樣能升華到那個境界嗎
回複討論(解決方案)
原生的shopnc好像不是這樣寫的,可能是後來加上吧。
很正常,後補的鎖
很正常,後補的鎖
此鎖何義?
意義在於你不執行它的一段隱藏代碼(用於那個常量的定義以其他)就無法讓程式執行
意義在於你不執行它的一段隱藏代碼(用於那個常量的定義以其他)就無法讓程式執行
從原理上說不通
理論上程式都是寫好的,才發布。
我覺得沒必要加上那麼一段代碼,又不是使用者會隨意存取碼,改變代碼流程,我覺得完全沒必要做這個判斷。
理論上程式都是寫好的,才發布。
我覺得沒必要加上那麼一段代碼,又不是使用者會隨意存取碼,改變代碼流程,我覺得完全沒必要做這個判斷。
這裡不是有沒有必要的問題,而是文法錯語的問題,當然這是我目前理解,也是發這帖的原因,都語法錯誤了,還談啥?
當然也可能沒有錯誤,不過PHP手冊上說的這個return的用法是在函數中,而這裡的return沒有用在函數中,所以錯誤!
我希望大家談談這個,而不是啥這裡這麼玩必不必要,再重申一遍, 這裡是不是語法錯誤!!!!!!!!!!!!!!!!
這種寫法主要是用於設定檔, 在外面可以這樣寫 $redisConfig = include('config.inc.php‘); 外面可以接收return的值
第一行是控制入口, 避免外部直接存取該檔案
怎麼會是文法錯呢?
defined('InShopNC') or exit('Access Invalid!');
是說,如果常量 InShopNC 沒有定義,就退出程式並顯示 Access Invalid!
否則 返回變數 $config
顯然這個程式不能被直接存取,不然只會輸出 Access Invalid!
只有在定義了常量 InShopNC 的程式鏈用 $x = include('config/config.ini.php'); 才能擷取到已經定義過的變數 $config 的值
通常 config.ini.php 是用來定義系統初值的地方,而作者卻沒有這樣做,顯然是出於某種原因在別處定義了。zy205817 不也說 原生的shopnc好像不是這樣寫的 嗎?
所以我說是:後補的鎖
php 中的 return 可以放在任何地方,如果在函數或方法中就是結束當前函數或方法並傳回值
如果在函數或方法外,就是結束當前程式檔案並傳回值
如果你的教科書中沒有提及這一點,那麼請將此書丟進茅廁裡(茅廁還嫌他臭)
手冊中明確的說到
如果在一個函數中調用 return 語句,將立即結束此函數的執行並將它的參數作為函數的值返回。 return 也會終止 eval() 語句或者指令檔的執行。
下面還有很多,我不一一複製了,自己去看 return語句的妙用還真不少
defined('InShopNC') or exit('Access Invalid!');
return $config;
就是有定義過InShopNC的時候,才可以訪問 $config;
如果沒定義過, 後面or exit('Access Invalid!'); 就已經退出了,不會執行 return $config
所以這個檔案如果直接存取是會顯示Access Invalid的。
必須是由其他已經定義了InShopNc的頁面才可以調用。
defined('InShopNC') or exit('Access Invalid!');
學習了 這也是一種檔案許可權的妙用 http://php.net/manual/zh/function.return.php
http://php.net/manual/zh/function.return.php
手冊裡面寫了,如果是include 就返回,有什麼問題,為什麼會有語法錯誤?