Kezdőoldal » Számítástechnika » Programozás » PHP - oop (hol a hiba)?

PHP - oop (hol a hiba)?

Figyelt kérdés

Sziasztok, több fájlban akarom tárolni a dolgaimat, most konkrét példaként config.php és functions.php


config.php tartalmazza az adatbázis csatlakozáshoz szükséges dolgokat, functions php pedig a funkciót:


config.php:


<?php

class config

{

public static $host="localhost";

public static $user="root";

public static $pass="";

public static $db="adatbazis1";

}

?>


functions.php:


<?php

class connect{


$conf= new config();

$kapcsolat = new mysqli($conf->host,$conf->user,$conf->pass,$conf->db);

if ($kapcsolat->connect_errno) {

echo "Failed to connect to MySQL: (" . $kapcsolat->connect_errno . ") " . $kapcsolat->connect_error;

}



echo $kapcsolat->host_info . "<br />";

}

?>



Hol hibázok ? Gondolom rosszul hivatkozok az első fájlban található dolgokra, de mégis hogyan kéne ?



2013. okt. 20. 21:10
 1/5 anonim ***** válasza:
Statikus tagok, tehát nem kell létrehozni a $conf változót, ha jól emlékszek config::host, config::user alakban lehet statikus attribútumokra hivatkozni...
2013. okt. 20. 22:30
Hasznos számodra ez a válasz?
 2/5 Drone007 ***** válasza:

Azért létrehozni egy class-t, hogy 4 változót táolj benne teljesen felesleges, és erőforráspazarló megoldás.

Ráadásul a connect class-nak semmilyen értelme nincs.

Egyrészt ne deklarálod benne a változókat, a függvényeket, másrészt nem echo-zhatsz ki belőle így.


A functions.php-ban, egyébiránt be kéne include-olni a config.php-t, mert így nem találja meg.

incluce_once('config.php');


Egyszerűbb lenne, ha a config.php a csatlakozási információkat egy egyszerű tömbben, vagy 4 változóban tartalmazná, és a functions.php-ban létezne egy jól megírt class, ami az adatbázis műveletekkel foglalkozna, mint csatlakozás, lekérdezések. A konstruktorral létrehozol egy kapcsolati objektumot, ami az adatbázishoz való kapcsolódást egy paraméterezett függvénnyel elvégzi, majd ezt az objektumot használhatod az egyéb lekérdezésekhez.


Így vhogy:

config.php:

<?php

$host = "localhost";

$user = "user";

$pass = "password";

$db = "database";

?>


functions.php:

<?php


class connect {


public kapcsolat;


function kapcsolodas($host = '', $user = '', $pass = '', $db = '') {

$this->kapcsolat = mysql_connect($host,$user,$pass);


if ($this->kapcsolat) {

mysql_select_db($db, $this->connection);

return $this->connection;

} else {

return false;

}


}


}

?>


Meghívás pedig pl index.php-ben:

<?php

...


include_once(config.php);

include_once(functions.php);


$db = new kapcsolodas($host, $user, $pass, $db);


...

?>


Persze ez még csak a kapcsolódási rész, sok minden hiányzik belőle, mint pl a lekérdezési függvények, hibakezelés, stb... De ezt már rád bízom.

Ha elakadsz, elég sok db class található a neten, amiből ötletet meríthetsz, vagy felhasználhatsz. Pl. ez nagyon hasonló ahhoz amit írtam:

[link]


Sok sikert!

2013. okt. 21. 17:45
Hasznos számodra ez a válasz?
 3/5 Drone007 ***** válasza:
Bocs elírtam, a class neve egyezzen meg a konstruktor függvényével!
2013. okt. 21. 17:47
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Köszönöm mindhárom választ!
2013. okt. 21. 20:30
 5/5 anonim ***** válasza:
ott, hogy: PHP
2013. okt. 21. 22:49
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!