Pagina 1 di 1

[PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:00
da treled
Salve, come da titolo è corretto questo codice che vi allego ..

Ora è brutto perché non so i nomi a modo ad dare le classi ma volevo sapere se va bene come sto facendo .. perché sono riuscito fare il sistema utenti.

ma vi posto un piccolo codice:

Codice: Seleziona tutto

<?php
class Core
{
	var $dbh;
	 
	
	function __construct()
	{
		try {
			$host = "localhost";
			$db_name = "xxx";
			$username = "root";
			$password = "";	
			$this->dbh = new PDO("mysql:host={$host};dbname={$db_name}", $username, $password);
		
		} catch (PDOException $e) {
			echo 'Connection failed: ' . $e->getMessage();
			}
		
	}

	function __destruct() {	
		
		$this->dbh=null;
	}
} // core
 
class DataBase extends Core {
	
	var $dbh;

	//Si puo' cmq accedere,se si vuole, alle comuni strutture di PDO mediante questi membri 
	var $sql;  //stringa sql
	var $stmt; //lo statement 
	var $row;  // la riga pdo in output 
	var $nrows; //numero di righe interessate dall'ultima select;
	var $error; // una stringa per gli errori (non usata per adesso)

 
	 
	function execute($sql)
	{
		//riempo la varibile sql
		$this->sql=$sql;
	 
		//Preparo le strutture per contenere la query
		$this->stmt = $this->dbh->prepare($this->sql);
	 
		//Eseguo la query
		$state = $this->stmt->execute();
	}
	 
	 
	function nrows()
	{
		return $this->nrows;
	}
	 
	
	 
	function lastInsertId()
	{
		//Da verificare di volta in volta.
		return $this->dbh->lastInsertId();
	}
	
	function disconnect()
	{
		$this->dbh=null;
		$this->nrows=0;
		$this->row=null;
		$this->stmt=null;
		$this->error="";
	}
	
	function __destruct() {	
		
		return $this->disconnect();
	}
} // database

class SendMail extends Core
{
	function stampaEmail($a)
	{
		echo '<p>La tua email e : '.$a.'</p>';
		
	}
}
?>
poi un'altra cosa si deve scrivere sempre in inglese se dopo una cosa va al pubblico??

giusto?


grazie mille e vi ringrazio molto..

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:08
da Zoff
Mh... a me sembra brutto indipendentemente dai nomi.

Perché intercetti l'eccezione nel costruttore di Core? Se non riesci a connetterti al DB a cosa ti serve quella classe? Tanto vale lasciar andare...
A cosa ti serve la classe Database se la usi esattamente come useresti PDO?
Perchè mai SendMail estende Core che crea una connessione al DB?

In sostanza di OOP c'è solo la sintassi.

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:31
da treled
ok , mi protesti fare un esempio prima che vado a fare il codice inutilmente..?

hai un'esempio andando quasi vicino al mio.?

per ora ho fatto login e logout e la pagina setup.

ciao e buona serata.

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:42
da treled
cosi.?

[code2=php]<?php
class Core
{

var $dbh;

//Si puo' cmq accedere,se si vuole, alle comuni strutture di PDO mediante questi membri
var $sql; //stringa sql
var $stmt; //lo statement
var $row; // la riga pdo in output
var $nrows; //numero di righe interessate dall'ultima select;
var $error; // una stringa per gli errori (non usata per adesso)


function __construct()
{
try {
$host = "localhost";
$db_name = "xxxx";
$username = "root";
$password = "";
$this->dbh = new PDO("mysql:host={$host};dbname={$db_name}", $username, $password);

} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}

}


function execute($sql)
{
//riempo la varibile sql
$this->sql=$sql;

//Preparo le strutture per contenere la query
$this->stmt = $this->dbh->prepare($this->sql);

//Eseguo la query
$state = $this->stmt->execute();
}



function disconnect()
{
$this->dbh=null;
$this->nrows=0;
$this->row=null;
$this->stmt=null;
$this->error="";

}

function __destruct() {

return $this->disconnect();
}
} // core


class UtilMail
{
function echoMail($a)
{
echo '<p>La tua email e : '.$a.'</p>';

}
}
?>[/code2]

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:43
da treled
login:
[code2=php]<?php
include('core.php');

if(isset($_POST["login"]))
{
$db = new Core();




$sql = "SELECT * FROM users WHERE username=:username and password=:password";

$username = $_POST["username"];
$p = md5($_POST["password"]);


$db->stmt = $db->dbh->prepare($sql);

$db->stmt->bindParam(":username", $username);
$db->stmt->bindParam(":password", $p);


$db->stmt->execute();


if($row = $db->stmt->fetch()){

session_start();

$_SESSION["login"]=true;
$_SESSION["username"]=$row["username"];
$_SESSION["name"]= $row["name"];
header('location: index.php');
}
else{

echo 'Username and Password are not found';

}
$db->disconnect();
}
?>
<form method="post" action="login.php">
<table>
<tr><td>Username:</td><td><input type="text" name="username"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr>
<tr><td><input type="submit" name="login" value="Login"></td>
<td></td></tr>
</table>
</form>[/code2]

funzionante.. cosi..

idee?

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 20:57
da Zoff
Ribadisco quanto detto in precedenza.

Quella classe è inutile.
Hai risolto solo la questione della connessione al db nella classe per le mail.

Resta il catch nel costruttore e che la classe fa esattamente quello che fa PDO, l'unica cosa utile è che ti genera automaticamente la stringa DSN ma il costruttore non è neanche parametrizzato...

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 21:11
da treled
ok, cancellato tutto e basta..!!! devo aspettare altri 10 anni per usare php e quando ci sara tutto con pdo..

per adesso uso php senza database..

ciao poi chiudere la discussione..

libri di merda di php5 fatti con il cu**.. e senza spiegare come si usa il db.

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 21:15
da Zoff
Non sono i libri a essere fatti male (almeno non tutti), il fatto è che non ti sei fatto le basi, né di PHP in generale né della OOP e pretendi di iniziare a scrivere il codice.

Aggiungo che PHP ad oggetti se l'obbiettivo non è l'ambito professionale ma lo si usa solo per hobby, specie senza basi di programmazione, è una perdita di tempo.
Per mettere su "due paginette" o un CMS non serve.

Re: [PHP5 oop è corretto cosi?

Inviato: giovedì 22 maggio 2014, 21:43
da treled
Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4587531#p4587531][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non sono i libri a essere fatti male (almeno non tutti), il fatto è che non ti sei fatto le basi, né di PHP in generale né della OOP e pretendi di iniziare a scrivere il codice.

Aggiungo che PHP ad oggetti se l'obbiettivo non è l'ambito professionale ma lo si usa solo per hobby, specie senza basi di programmazione, è una perdita di tempo.
Per mettere su "due paginette" o un CMS non serve.
Per mettere su "due paginette" o un CMS non serve.
con questo mi hai salvato .. tanto era solamente per imparare qualcosa di nuovo..

poi se voi ti mando i link del mio sito personale che lo fatto con gli include.
tanto modifico io a mano etc..

ti ringrazio molto..

solo che certi libri che sono lungi e poi non ti insegnano nulla di concreto e maggior parte delle volte vai a cercare su internet.

grazie molto e buona serata.

Re: [PHP5 oop è corretto cosi?

Inviato: venerdì 23 maggio 2014, 2:47
da UbuNuovo
Il sito personale fatto con gli include non ha niente di sbagliato!
Non ti abbattere!
Io sono dell'idea che non si può cominciare con l'oop senza avere già le basi del php procedurale, ma potrei sbagliarmi!
Te fai la tua strada e vedrai che avrai le tue soddisfazioni, nessuno "nasce imparato".
Io credo che senza PHP con i suoi pregi e i suoi difetti ,il web non sarebbe stato quello che è, la maggior parte dei siti dinamici sono in PHP.
Tanti di quelli che lo criticano stanno scrivendo su siti PHP... poi, sono venuti fuori altri linguaggi ma lo sviluppo di internet, secondo me , è merito di PHP.
La mia è una considerazione di parte, sono innamorato di PHP, e si sa l'amore è irrazionale e vince tutto. :D