2011-12-16 2 views
1

난 오픈 중괄호가있는 경우 문이 포함 된 상단에PHP는 cyrly 중괄호 ifelse containg 가기 파일과 아래 파일을 inlcude

를 PHP 파일을 include_once 문 그리고 다음에 파일을 포함 할 수있는 방법 누군가가 말해 줄래 밑에는 앞의 if 문보다 많은 if 문에 닫는 중괄호가 포함되어 있습니까? 렌더링 된 페이지가 개폐에 대한 중괄호를 인식하지 못하는 것처럼

<?php include_once('includes/authtop.php');?> 

<div id="mydiv"> 
// stuff here 
</div> 

<?php include_once('includes/authbottom.php');?> 

**Note**: authbottom.php contains several ifelse statements and displays data accordingly. 

가 좀 더 깨끗하고 정리 코드를 가지고이 작업을 수행해야하지만 난에 코드를 이동할 때 내가 오류가 포함, 그건?

함수 또는 함수/클래스와 관련이 있다면 누군가에게 사례를 제공해주세요.

이 정상 파일입니다

if($loggedin) { 

if($accessLevel == 0 ) { 

이 바닥 파일 authtop.php : 존

authbottom.php 사전에

} elseif() { 

// do this 

} elseif() { 

// do this 

} elseif() { 

// do this 

} else { 

// do this 

} 

감사합니다 :)

+0

아, 오류가 발생합니다. 구문 분석 오류 : 구문 오류, 예기치 않은 $ end in (첫 번째 줄의 마지막 줄에 중괄호가있는 위치 포함) – jonnypixel

답변

0

당신은 안 그러한 방식으로 조건을 처리 할 파일을 포함해야합니다. 지저분하고 오류가 발생하기 쉽습니다. 당신이 발견 한대로.

대신 코드를 리팩터링하십시오. 여기

은 그 예입니다 ...

function someFunc() { 
    if($loggedin) { 

     if($accessLevel == 0 ) { 

     return TRUE; 

     } elseif() { 

     // do this 

     } elseif() { 

     // do this 

     } elseif() { 

     // do this 

     } else { 

     // do this 

     } 
} 



if (someFunc()) { 
    // stuff here 
} 
+0

알렉스 덕분에 정리가 잘된 것 같습니다. 그러나 그것은 모든 HTML이 if 문을 통과해야한다는 것을 의미합니까? 나는 코드를 가지고있는 첫 번째 if 결과가 주 파일에 보관 될 수 있기를 바랬다. 반면 smalle 비트를 포함하는 코드는 최종 if 문 – jonnypixel

+0

에 TRUE를 반환 할 수 있었다. 어떻게 든 사용할 수 있을까? – jonnypixel

+0

@jonnypixel : 예제의 맨 아래에있는 조건에서 중괄호 안에있는 코드가 실행된다는 것을 의미합니다. – alex

0

내가 스위치

include('authtop.php); 

switch($accesslevel) { 
    default: 
    case 0: include('filepath.php'); break; 
    case 1: include('filepath.php'); break; 
    case 2: include('filepath.php'); break; 
    case 3: include('filepath.php'); break; 
    case 4: include('filepath.php'); break; 
} 

include('authbottom.php'); 

또는 ....

switch($accesslevel) { 
    default: 
    case 0: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Guest'; 
     /* whatever you need to include for level 0 here */ 
     break; 
    case 1: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'User'; 
     /* whatever you need to include for level 1 here */ 
     break; 
    case 2: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Moderator'; 
     /* whatever you need to include for level 2 here */ 
     break; 
    case 3: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Super Moderator'; 
     /* whatever you need to include for level 3 here */ 
     break; 
    case 4: 
     if($paid==0) { $pd='THANKS'; } else { $pd='DONATE!'; } 
     $lvl = 'Admin'; 
     /* whatever you need to include for level 4 here */ 
     break; 
} 


echo ' 
<div class="myDiv">'.$pd.'</div> 
<div class="myDiv2">'.$lvl.'</div> '; 

html로가 표시됩니다를 사용하십시오 어떤 스위치에 따라 $ pd 변수가 설정되었습니다.

그리고 포함 된 항목을 설정하여 중괄호 나 대괄호없이 자체 포함되도록하는 것이 가장 좋습니다.

+0

감사합니다. scott,하지만 그들은 중괄호가 있어야합니다. 귀하의 방법은 효과가있는 것처럼 보이지만 알렉스의 방법은보다 체계적인 방법으로 보입니다. 난 그냥 알렉스에서 코드를 시도하고 그럴 수 없어 주위에 내 머리를 얻을 것 같습니다. 당신의 모범을 시험해 볼 것입니다. 나는 어떻게 컬을 할 것인가? – jonnypixel

+0

if/else 문이 더 이상 필요하지 않습니다. 스위치는 기본적으로 더 체계적이고 다단계 인 if/else 문입니다. 나는 if/ifelse/ifelse/ifelse/else 문장으로 전환하는 것을 선호한다. 위에서 사용자 수준의 특정 콘텐츠를 어디에 넣을 지 보여주기 위해 편집했습니다.그리고 사용자가 로그인하지 않았 으면 액세스 수준은 0이됩니다. 로그인 할 때 별도의 변수가 필요하지 않습니다. – Scott

+0

상단에 열린 곱슬이 들어있는 PHP 파일이 포함되지 않는 이유는 무엇입니까? 그것의 끝을 누른 다음 열려있는 곱슬에 대한 닫는 둥근 포함 하단에있는 PHP 파일을 포함? 문제는 다양한 수준의 permisison을 통해 전환하지 않는 것이지만 statemnts에 추가 조건이 포함 된 경우 다른 방법입니다. 예 : accesslevel = 1 && paid == 0, accesslevel = 1 & paid = 1 등인 경우 ... – jonnypixel