• 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

Object Storage Arubacloud
0 głosów
223 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,291 wizyt
pytanie zadane 2 września 2016 w SQL, bazy danych przez Siudson Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 2,294 wizyt
pytanie zadane 13 grudnia 2015 w SQL, bazy danych przez artimal Gaduła (4,800 p.)
0 głosów
2 odpowiedzi 302 wizyt

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...