2015-06-09 4 views
2

Im относительно нового для программирования, около 1 год неполного рабочего дня опыта обучения, я очень новичок в PHP, только через несколько недель, и с помощью w3schools, чтобы помочь мнепереход от процедурного кода OOP

Im теперь пытается сделайте переход к стилю ООП и просто не можете понять концепцию, а точнее, как и когда ее применять и, таким образом, обратились сюда, где я долгое время скрывался за помощью, а не за помощь и советы.

Я хотел бы получить некоторую помощь/краткое объяснение, как я написал бы folloing в PHP ООП пути

$sql="SELECT name, lastname, member_nr, joindate, order, creditCardInfo 
from members 
WHERE member_nr = $'member_nr'"; 
$result = mysql_query($sql) or die("error"); 
while($row = mysql_fetch_array){ 
    echo '<h3>Personal Profile</h3>'; 
echo $name = $row['name']; 
    echo $lastName = $row['lastname']; 
: 
: 
} 

Моя проблема, я не знаю, должен ли я создать класс для выше, личный профиль может быть рассматривается как право человека, которое является объектом ...? Но я включаю часть HTML и часть mysql_query и т. Д. В моем классе ... У меня только что появилось столько вопросов, когда речь заходит о ООП, ее очень сложно узнать по собственному признаку, поэтому им действительно нравится любая помощь или совет. можно получить здесь

Спасибо

+0

не вписываться в письменной форме полный ООП. начать с OOB - объектно-ориентированного BASED.e .g. используйте объекты, просто не начинайте определять свои собственные. –

+0

Попробуйте подумать о том, какие действия выполняет ваш код ... в этом случае он 1. обращается к БД 2. Формирует данные из БД и 3. Выводит HTML. – STLMikey

+0

@STLMikey спасибо, что хороший отзыв, но где оттуда мне теперь нужно создать 3 разные функции для трех разных действий ... на таких точках, как эти, которые я застрял – gekkogurru

ответ

1

Этот случай не был бы хорошим примером. Вам нужен класс, если вы хотите инкапсулировать логику одного объекта, чтобы упростить его использование вне класса.

Например:

class Member { 
    private $id, $name, 
      $lastname, $member_nr, $joindate, $order, $creditCardInfo; 
    public function __construct($id = 0) { 
     if($id != null) $this->loadFromDB(); 
    } 

    private function loadFromDB() { 
     //Do db load here... 
    } 

    public function Update(){ 
     //Do db update 
    } 

    public function Delete() { 
     //Do db delete... 
    } 

    public function GetFromMemberNR($nr) { 
     //Do select 
    } 

    //Additional Functions Verfication 
} 

В конце концов вы будете иметь довольно сложный код здесь. Но чтобы использовать его вне вас, просто включите php-файл класса.

include 'member.php'; 
$member = new Member(); 
$member->GetFromMemberNR(2); //Does everything for you inside the function.. 

Существует множество инструментов, которые помогут вам облегчить работу с базой данных, но это основа ООП. Основная идея - инкапсуляция для повторного использования.

+0

спасибо, я ясно вижу преимущество в ООП из вашего примера, его просто так трудно понять ... – gekkogurru

+0

его, как будто вы изучаете новый язык все вместе с нуля – gekkogurru

+0

Его хорошо делать. В этом стиле программирования много языков. Повторное использование кода является основным преимуществом. Вы просто называете это один раз, и вы можете использовать его повсюду. Объедините его с такими инструментами, как Composer, который поможет вам с автозагрузкой классов, и у вас есть мощная динамическая библиотека кода, не беспокоясь о том, чтобы вспомнить, где вы поместили этот один бит кода. – MiltoxBeyond

2

Сначала вы должны использовать mysqli, так как все mysql_* устарели и удалены с PHP в будущем.

Здесь базовый класс с некоторыми функциями, но вы должны расширить его для вашего использования! И узнайте, что делают функции, которые не получили комментариев самостоятельно, чтобы узнать больше. Это делает несколько подключений к базе данных, поэтому чтение некоторых материалов об одноэлементных тоже будет полезно для вас!

<?php 
class dbconnection { 
    private $dbHostname; 
    private $dbName; 
    private $dbUsername; 
    private $dbUserpassword; 

    private $error; 
    private $querysuccess; 
    private $connected; 

    private $mysqli; 

    public function __construct() { 
     $this->dbHostname = 'localhost'; 
     $this->dbName = 'databasename'; 
     $this->dbUsername = 'username'; 
     $this->dbUserpassword = 'password'; 
     $this->connected = false; 
    } 
    public function __destruct() { 
     $this->mysqli->Close(); 
    } 

    public function connect() { 
     //establishing a database connection 
     $this->mysqli = new mysqli($this->dbHostname, $this->dbUsername, $this->dbUserpassword, $this->dbName); 
     if($this->mysqli->connect_errno) {//When there was an error during the connecting 
      echo 'Connection Error:<br>'.$this->mysqli->connect_error; 
      $this->connected = false; 
     } else { 
      $this->connected = true; 
     } 
     if(!$this->mysqli->set_charset('utf8')) {//Need to be done for some functions! 
      echo 'Error during seting the charset: <br>'.$this->mysqli->error; 
     } 
    } 

    public function doquery($query_str) { 
     //method which executes the query 
     $returnval = false; 
     if($this->connected && $query_str != '') { 
      //only when connected AND the query is not empty 
      $res = $this->mysqli->query($query_str);//this is the equivalent of mysql_query 
      if($this->error_get() == '') {//Check for an error 
       $this->querysuccess = true; 
      } else { 
       $this->querysuccess = false; 
      } 
      $returnval = $res; 
     } else { 
      echo 'No database connection, this needs some!'; 
     } 
     return $returnval; 
    } 
    public function query_success() { 
     return $this->querysuccess; 
    } 
    public function affected_rows_get() { 
     return $this->mysqli->affected_rows; 
    } 
    public function error_get() { 
     return $this->mysqli->error; 
    } 
    public function insert_id_get() { 
     return $this->mysqli->insert_id; 
    } 
    public function escape_str($str) { 
     return $this->mysqli->real_escape_string($str); 
    } 
    public function is_connected() { 
     return $this->connected; 
    } 
    public function fetch_assoc(&$res){ 
     return $res->fetch_assoc(); 
    } 
    public function fetch_assoc_array(&$res){ 
     return $res->fetch_array(MYSQLI_ASSOC); 
    } 
} 
Смежные вопросы