2010-05-13 2 views
4

Любые советы приветствуются! У меня очень ограниченное понимание классов php, но ниже - моя отправная точка для маршрута, который я хотел бы принять. Код - это отражение того, что я вижу в голове, и как я хотел бы заниматься бизнесом. Мой код даже выглядит нормально, или я не в порядке?Советы/предложения по моему первому проекту PHP-классы

Каковы ваши мысли, как бы вы решили достичь такой задачи, как form-> validate-> insertquery-> sendmail-> вернуть сообщения и ошибки?

Пожалуйста, постарайтесь, чтобы ваши ответы были достаточно простыми для меня, чтобы переварить, как для меня, о понимании происходящего, а не только о копировании/вставке.

С наилучшими пожеланиями, Phil.

Примечание: это базовая структура, полный код не добавлен.

<?php 
//======================================= 
    //class.logging.php 
//======================================== 
    class logging 
    { 

     public $data = array(); 
     public $errors = array(); 



     function __construct() 
     { 
      array_pop($_POST); 
      $this->data =($this->_logging)? is_isset(filterStr($_POST) : ''; 

      foreach($this->data as $key=> $value) 
      { 
       $this->data[$key] = $value; 
      } 
      //print_r($this->data); de-bugging 
     } 

     public function is_isset($str) 
     { 
      if(isset($str)) ? true: false; 
     } 

     public function filterStr($str) 
     { 
      return preg_match(do somthing, $str); 
     } 

     public function validate_post() 
     { 
      try 
      { 
       if(!is_numeric($data['cardID'])) ? throw new Exception('CardID must be numeric!') : continue; 
      } 
      catch (Exception $e) 
      { 

       return $errors = $e->getCode(); 
      } 
     } 

     public function showErrors() 
     { 
      foreach($errors as $error => $err) 
      { 
       print('<div class="notok"></div><br />'); 
      } 
     } 

     public function insertQ() 
     { 
      $query = ""; 
     } 

    } 


//======================================= 
    //Usercp.php 
//======================================== 
if(isset($_GET['mode'])) 
    { 
    $mode = $_GET['mode']; 
    } 
    else 
    { 
    $mode = 'usercp'; 
    } 


    switch($mode) 
    { 
     case 'usercp': 
     echo 'Welcome to the User Control Panel'; 
     break; 

     case 'logging': 
      require_once 'class.logging.php'; 
      $logger = new logging(); 

      if(isset($_POST['submit']) 
      { 
       if($logger->validate_post === true) 
       { 
        $logger->insertQ(); 
        require_once '/scripts/PHPMailer/class.phpmailer.php'; 
        $mailer = new PHPMailer(); 
        $mailer->PHPMailer(); 
       } 
       else 
       { 
        echo ''.$logger->showErrors.''; 
       } 
      } 
      else 
      { 
       echo 
        ' 
        <form action="'.$_SERVER['PHP_SELF'].'?mode=logging" method="post"> 

        </form> 
        '; 
      } 
     break; 

     case 'user_logout': 
     // do somthing 
     break; 

     case 'user_settings': 
     // do somthing 
     break; 






?> 

Я решил использовать этот метод для возвращения ошибок, а не печатать их в методе, спасибо за совет Игорь!

catch (Exception $e) 
      { 
       $this->errors[] = $e->getMessage(); 

      #ERROR DE_BUGGING ONLY================================ 
      #print('<pre>'); 
        #print_r($this->errors); 
      #print('</pre>'); 
      #===================================================== 
      } 
      if($this->errors) 
      { 
       return false; 
      } 
      else 
      { 
       return true;  
      } 

ответ

1

Первый совет, который приходит на ум: отдельная логика из презентации. Вы можете начать с использования некоторых движков шаблонов, таких как Smarty. Если вы все это перепутаете, скоро это будет огромная свалка.

Также попробуйте включить определения классов из отдельных файлов, и в качестве следующего шага я бы рекомендовал использовать некоторый шаблон, например Model-View-Controller, для разделения моделей на логику.

Это то, о чем я могу думать, не углубляясь глубоко в код.

+0

Привет, Игорь, спасибо за ваше поношение. Im создание приложения для сообщества, чтобы помочь людям регистрировать данные, которые я буду выпускать как CC, поэтому я думаю, что рамки не могут быть и речи. Более подробно я рассмотрю модель MVC, спасибо. – Philip

+0

Smarty - с открытым исходным кодом, не должно быть проблемой для выпуска CC, я бы не подумал. – Geoff

+0

Я посмотрю, спасибо, Джефф! – Philip

3

Похоже, что у вас есть достойное понимание кода ООП. Я вижу объявленные публичные вары и даже попытки/уловы, хотя я бы сказал, не забывайте, что «публичное» ключевое слово видимости перед «функцией __construct()» - не совсем необходимо, но оно поддерживает хорошие методы кодирования.

Кроме того, я бы сказал, что все, что вы здесь делаете, было написано, отлажено и исправлено, и доказанная продукция, достойная уже каждый из десятков фреймворков PHP. Конкретная задача, которую вы упомянули, «form-> validate-> insertquery-> sendmail-> возвращает сообщения и ошибки» настолько невероятно проста в Zend Framework, в моей выборке. И я бы предположил, что то же самое верно для Symphony, Solar, Cake и т. Д.

Сделайте себе одолжение и перестаньте кодировать то, что уже было закодировано. Изучите структуру, в которой есть сообщество, регулярные обновления и хорошо написанная полная документация. Опять же, я рекомендую Zend Framework.

+0

+1 для Zend Framework. У них очень хороший стандарт кодирования, который помогает писать хороший код. –