2012-02-28 43 views
3

快速問題。將一個PHP類文件保存爲myClass.class並將其包含在其他「常規」.php文件中可以嗎?將OOP PHP文件另存爲.class

它在PHP 5.3中工作得很好,但我想知道這是否是不好的做法。

TL;博士:

useObjects.php 
<? include('myClass.class'); 
$my_object_1 = new myClass(); 
?> 

myClass.class 
<? 
//constructors and functions 
?> 

謝謝!

編輯:這只是爲我自己的組織。

+0

它會工作,但它也允許其他人查看你的代碼爲'文/平原「,如果他們知道路徑。讓攻擊者瞭解任何不安全因素 – 2012-02-28 02:52:33

+0

如果您在document_root之外擁有它們,那麼您應該能夠查看奇怪命名的源文件爲text/plain。 – 2012-02-28 02:59:31

+0

感謝您的評論,這是在一個非公開的目錄 – user1062058 2012-02-28 03:04:08

回答

8

不這樣做的唯一技術原因是,如果Web服務器未配置爲將.class文件解析爲PHP腳本,並且文件位於文檔根目錄下並通過瀏覽器訪問,則它將顯示PHP源代碼最終用戶暴露源代碼或敏感數據,如數據庫連接細節。

除此之外,這是一個慣例。雖然PHP沒有太多的約定可言,但.class是一個非常不尋常的。然而,*.class.php是相當普遍的。

+0

謝謝,我仍然會使用常規的.php擴展名。 – user1062058 2012-02-28 03:03:46

+0

require()和include()固有地評估。你不需要配置服務器來將它們解析爲PHP。 (對不起,澄清一下,這個聲明只是爲了澄清:) – 2012-02-28 03:03:59

+0

還要注意,如果你不使用* .php,那麼源代碼突出顯示(如在vim或NetBeans中)將無法正常工作。 – 2012-02-28 03:11:39

5

這是不尋常的,因爲.class不一定是一個常見的PHP約定,但除此之外沒有任何技術上的理由反對它。

+2

這和'.class'是Java常見的,所以文件命名可能會導致一些混淆。 – imm 2012-02-28 02:51:49

0

使用它,但沒有錯。通常我會傾向於使用.inc和means來包含。

1

由於唯一真正重要的是PSR-0。你應該命名類,以便它符合該標準。

  • \Doctrine\Common\IsolatedClassLoader = Doctrine/Common/IsolatedClassLoader.php
  • \Symfony\Core\Request = Symfony/Core/Request.php
  • \Zend\Acl = Zend/Acl.php
  • \Zend\Mail\Message = Zend/Mail/Message.php