PHP включает в себя верхний файл и нижний файл, содержащий фигурные скобки ifelse - PullRequest
1 голос
/ 16 декабря 2011

Как я могу включить вверху php-файл, содержащий оператор if с открытой фигурной скобкой,

И затем включить файл внизу, который содержит закрывающую фигурную скобку для оператора 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.

Мне нужно сделать это, чтобы получить более чистый и упорядоченный код, но когда я перемещаю код во включаемые файлы, я получаю сообщение об ошибке, как если бы отображаемая страница не распознала фигурные скобки для открытия и закрытия?

Если кто-то имеет отношение к функции или функции / классу, может кто-нибудь привести пример.

Это верхний файл: authtop.php

if( $loggedin ) { 

if( $accessLevel == 0  ) {

Это нижний файл: authbottom.php

} elseif() {

// do this

} elseif() {

// do this 

} elseif() {

// do this 

} else {

// do this

}

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Я бы использовал переключатель

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 голосов
/ 16 декабря 2011

Вы не должны включать файлы для обработки условий таким образом.Это грязно и подвержено ошибкам;как вы обнаружили.

Вместо этого рефакторинг вашего кода.

Вот пример этого ...

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
}
...