這種寫法的人當時是不是吸毒了才這麼寫

來源:互聯網
上載者:User
感覺是一種的抽風的寫法,也可能是吸毒了太興糞的寫法,不知為了啥。很多人就是不喜歡用常規出牌,總是在那裡搞手銀的事,這樣能升華到那個境界嗎


回複討論(解決方案)

原生的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 就返回,有什麼問題,為什麼會有語法錯誤?
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.