2012-11-07 54 views
0

我已經搜索了類似的問題,但沒有找到任何。通常的問題是某個類不能在另一個類中重新聲明,因此解決方案是使用「require_once」或「include_once」。但是我的錯誤是不允許類重新聲明!無法在classX.php中重新聲明classX?

讓我解釋一下,我有兩個類,DesignDesignSide。 我有一堆PHP文件,我使用這兩個類。 - build_design.php, - browse_designs.php,這給出了一個AJAX調用 - load_designs.php

每一個設計可以有幾個面來,所以所有的3檔以上包括線:

require_once("Design.php"); 

Design.php有一行:

require_once("DesignSide.php"); 

但在build_design.php,我的錯誤是:

Fatal error: Cannot redeclare class DesignSide in ../classes/DesignSide.php on line 4 

即它反對DesignSide聲明自己!這些是DesignSide的開始行:

<?php 

class DesignSide 
{ 
private $id; 
private $data; 
private $designtag; 
private $side; 

怎麼了?

+0

'Design.php'是否在某處調用'DesignSide'? –

+0

在require_once函數中缺少文件名引用 – Hkachhia

+0

我其實在我的代碼中有引號 - 只是編輯了包含它們的問題。 – user961627

回答

1

......否則你可以在你的腳本中使用PHP的一個魔術​​來防止這種行爲。

保存此文件的config.php現在

function __autoload($class) { 
    if(file_exists($class . '.php')) { 
     require_once $class . '.php'; 
    } else { 
     die('No such file.'); 
    } 
} 

,包括/需要在所有文件config.php,你並不需要包括/需要的類文件。

唯一需要注意的是類名必須與文件名匹配。

0

有人剛剛刪除了他們的答案 - 但我只是來打勾它作爲正確的答案。 原來,事實上,我確實有「DesignSide.php」包含兩次,在build_design.php。 謝謝!我的錯!

所以正確的答案是在Design中包含DesignSide類,並且只在三個php文件中包含Design類。