• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

W jaki sposób zrobić dodawanie do bazy przy dziedziczeniu z innej klasy

0 głosów
580 wizyt
pytanie zadane 7 czerwca 2017 w PHP przez zirael [PL] Mądrala (5,200 p.)

Witam,

uczę się obiektowości i chciałem zrobić dodawanie do bazy danych przesłanych parametrów dla prostokąta lub kwadratu. Napisałem klasę z której "dziedziczy", ale chciałbym dodać dodawanie do bazy danych.

Będę wdzięczny jakby ktoś powiedział mi jak to zrobić bo nie wiem czy to w klasie głównej zrobić czy dziedziczącej.

 

class.figure.php

<?php

abstract class Figure 
{
	private static $count;
	
	
	public static function getCountFigure()
	{
		return self::$count;
	}
	
	public function __construct()
	{
	
		self::$count++;
		echo "Ilość utworzonych figur geometrycznych: ".self::$count.'<br>';
	}
	
	abstract public function draw();
	abstract public function field();
}	
	
?>

class.rectangle.php

<?php
class Rectangle extends Figure
{
	public $width;
	public $height;
	public $color;
			
	public function __construct($width, $height, $color)
	{
		parent::__construct();
		$this->width  = $width;
		$this->height = $height;
		$this->color  = $color;
	}
			
	public function draw()
	{
		echo "Figura Prostokąt, ma szerokość: ".$this->width.", wysokość: ".$this->height.", kolor: ".$this->color.'<br>'; 
	}
			
	public function field()
	{
		echo "Pole prostokątu wynosi: " . $this->width * $this->height.'<br><br>';
	}
						
}
		
		
$rectangle1 = new Rectangle((integer)$_POST['length'], (integer)$_POST['width'], $_POST['color']);
$rectangle1 -> draw();
$rectangle1-> field();
	
?>

connect.php

<?php 

class conDB
{
	private $connect;
	
	public function __construct($host, $user, $pass, $db)
	{
		$this ->connect = mysqli_connect($host, $user, $pass, $db);
		
		if(!$this ->connect)
		{
			throw new Exception('Błąd połączenia z bazą danych!');
		}
	}	
}

?>	

 

 

2 odpowiedzi

0 głosów
odpowiedź 8 czerwca 2017 przez DL TD Nałogowiec (36,710 p.)

Za bazę danych powinna odpowiadać odrębna klasa. wink

komentarz 8 czerwca 2017 przez zirael [PL] Mądrala (5,200 p.)
Tak właśnie uczyniłem, natomiast jak mam okodować klasę abstrakcyjną z połączeniem i co w klasie dziedziczącej? Czy to powinna być funkcja private? A jesli tak, to jak Insertować dane do bazy? W Values $this->width, $this->height, $this->color ? :-/
komentarz 9 czerwca 2017 przez DL TD Nałogowiec (36,710 p.)
edycja 9 czerwca 2017 przez DL TD

Dobrze, więc tak. Ogólnie rzecz biorąc przydałaby się klasa np. Database, która łączyła by ze sobą klasę conDB z interfejsem insDB ("ins" od insert, która zajmowała by się "wrzucaniem" tych danych do bazy). Ten interfejs stanowiłby pewne wytyczne co powinna posiadać klasa "insertująca" coś do bazy. Dla klasy Rectangle mogła by się nazywać np. RectangleInsDB. Pamiętaj, że klasa Database ma używać interfejsu a nie implementacji. Tak skonstruowana klasa Database powinna zawierać się abstrakcyjnej klasie Figure.

EDIT: Również się uczę, tak jak ty (jestem na początkowym etapie poznawania wzorców). Myślę, że tak było by najprościej, gdyż w ten sposób rozprzęgamy naszą aplikację (zmniejszamy zależności w aplikacji).

komentarz 9 czerwca 2017 przez DL TD Nałogowiec (36,710 p.)
edycja 9 czerwca 2017 przez DL TD

Insertować to możesz tworząc akcesory (czyli metody typu get i set)

EDIT: Myślę, że można by było np. zrezygnować z tego interfejsu insDB i insertowaniem obciążyć klasę dziedziczącą po Figure. W tedy twój sposób "$this->width, $this->height, $this->color" byłby ok. W ogóle lepiej abyś używał PDO i parametry bindował

0 głosów
odpowiedź 20 czerwca 2017 przez marcolo Obywatel (1,530 p.)
Podłączę się do posta, bo też mam z tym problem.

Właśnie potrzebuje jakiejś klasy, czy funkcji która będzie dodawała i odczytywała z bazy, jednak jestem zielony, i wiele jeszcze nie ogarniam, możecie napisać przykładową klasę zajmującą się dodawaniem do bazy i opisać mi linia po linii, jak to działa?

Podobne pytania

–1 głos
1 odpowiedź 1,676 wizyt
pytanie zadane 2 września 2016 w SQL, bazy danych przez Siudson Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 2,588 wizyt
pytanie zadane 13 grudnia 2015 w SQL, bazy danych przez artimal Gaduła (4,800 p.)
0 głosów
2 odpowiedzi 474 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...