- Home
- Categorie
- Coding e Sistemistica
- PHP
- Consigli php
-
Consigli php
Salve a tutti,
Sono un appassionato di php, scrivo php procedurale, non so programmare a oggetti e non so usare framework.
La mia domanda è: pubblicare pagine web con php procedurale, è obsoleto? Sconsigliabile?
Grazie a tutti per le risposte
Buona serata
-
@enricocarli said:
La mia domanda è: pubblicare pagine web con php procedurale, è obsoleto? Sconsigliabile?
No per entrambe, semmai dipende da cosa devi fare.
Saluti.
-
Diciamo che per progetti complessi è meglio usare un framework?
-
@enricocarli said:
[…]per progetti complessi è meglio usare un framework?
Rientra nelle possibili soluzioni.
Saluti.
-
Io ero come te, poi per un sito complesso ho imparato funzioni e classi e non tornerei più indietro.
E' più rapido e ordinato.
-
io uso molto le funzioni, diciamo che è meglio usare classi e framework, ma nel frattempo posso pubblicare le mie pagine anche se sono in php procedurale giusto?
altra domanda, voi come strutturate le vostre applicazioni?
io faccio così:
nella root: index.php
[PHP]
<?php
include "inc/config.php";
include "inc/functions.php";if(isset($_GET['app'])){ if (in_array("views/".$_GET['app'].".php", $views)) { if (in_array("app/".$_GET['app'].".php", $app)) { include "app/".$_GET['app'].".php"; } include "views/".$_GET['app'].".php"; } else { echo "404"; } } else { if($current_url==$base_url){ if (in_array("app/".$default_view.".php", $app)) { include "app/".$default_view.".php"; } include "views/".$default_view.".php"; } else { echo "404"; } }
?>
[/PHP]in config.php
[PHP]
<?phpheader('Content-Type: text/html; charset=utf-8'); $views = glob('views/*.php'); $app = glob('app/*.php'); $default_view ="home"; function dbconn($type){ switch($type){ case "myapp_moto": ob_start(); ini_set('display_errors', 1); $db1 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("myapp_moto", $db1); break; case "codeigniter": ob_start(); ini_set('display_errors', 1); $db2 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("codeigniter", $db2); break; } }
?>
[/PHP]poi 2 cartelle "app" e "view" nella prima il codice php che estrae dati dal db e mette in un array,
e nella seconda le view che espongono i dati.Secondo voi è una strada corretta? come dovrei fare se volessi usare le classi?
grazie mille per le risposte
buona domenica
-
Io lo trovo un po' laborioso ma se ti trovi bene così...
Con le classi a prescindere è più efficente chiamare le varie funzioni/oggetti.
-
Puoi postare un esempio di codice?
-
@enricocarli said:
io uso molto le funzioni, diciamo che è meglio usare classi e framework, ma nel frattempo posso pubblicare le mie pagine anche se sono in php procedurale giusto?
Nessuno te lo vieta.
@enricocarli said:
altra domanda, voi come strutturate le vostre applicazioni?
io faccio così:
nella root: index.php
[PHP]
<?php
include "inc/config.php";
include "inc/functions.php";if(isset($_GET['app'])){ if (in_array("views/".$_GET['app'].".php", $views)) { if (in_array("app/".$_GET['app'].".php", $app)) { include "app/".$_GET['app'].".php"; } include "views/".$_GET['app'].".php"; } else { echo "404"; } } else { if($current_url==$base_url){ if (in_array("app/".$default_view.".php", $app)) { include "app/".$default_view.".php"; } include "views/".$default_view.".php"; } else { echo "404"; } }
?>
[/PHP]in config.php
[PHP]
<?phpheader('Content-Type: text/html; charset=utf-8'); $views = glob('views/*.php'); $app = glob('app/*.php'); $default_view ="home"; function dbconn($type){ switch($type){ case "myapp_moto": ob_start(); ini_set('display_errors', 1); $db1 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("myapp_moto", $db1); break; case "codeigniter": ob_start(); ini_set('display_errors', 1); $db2 = mysql_connect("localhost", "root", "mysql"); mysql_select_db("codeigniter", $db2); break; } }
?>
[/PHP]poi 2 cartelle "app" e "view" nella prima il codice php che estrae dati dal db e mette in un array,
e nella seconda le view che espongono i dati.Secondo voi è una strada corretta? come dovrei fare se volessi usare le classi?
grazie mille per le risposte
buona domenicaCocordo con l'osservazione fatta da Ivan88 sul codice laborioso.
A mio avviso il consiglio migliore è quello di studiare a capofitto su più tutorial possibili. Poi con il tempo, l'esperienza e vedere quei codici esemplificativi in aggiunta a quelli che troverai nel corso delle ricerche ti aiuteranno a scrivere codice di più professionali e di migliore comprensione.
Saluti.
-
Grazie mille e scusate il ritardo nella risposta; sto sperimentando con php a oggetti; un esempio: vorrei fare un blog che pesca da 2 db; ho scritto queste classi:
myclass.php
[PHP]
<?php
class Examples{
private $db;public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'examples'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM actor LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['actor_id'], "fullname" => $row['fullname'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } class Codeigniter{ private $db; public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'myapp_moto'); } public function get_actors(){ $actors = array(); $query = $this->db->query('SELECT * FROM articoli LIMIT 10'); while ($row = $query->fetch_array(MYSQLI_ASSOC)){ $actors[] = array( "id" => $row['id'], "titolo" => $row['titolo'] ); } return $actors; } public function __destruct(){ mysqli_close($this->db); } } $attori = new Examples(); echo "<pre>"; print_r($attori->get_actors()); echo "</pre>"; $news = new Codeigniter(); echo "<pre>"; print_r($news->get_actors()); echo "</pre>";
?>
[/PHP]potrei includere la classe in tutte le view, e farmi un metodo per ogni view in base a quello che mi serve? è corretta una cosa del genere secondo voi?
grazie mille e buon week end
-
Anzi ancora meglio:
[PHP]
<?php
class Examples{
private $db;public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'examples'); } public function wolly($myquery,$myfields){ $array_query = array(); $array_fields = explode(",", $myfields); $query = $this->db->query($myquery); $i = 0; while ($row = $query->fetch_array(MYSQLI_ASSOC)){ foreach ($array_fields as $field) { $array_query*[$field] = $row[$field]; } $i++; } return $array_query; } public function __destruct(){ mysqli_close($this->db); } } class Codeigniter{ private $db; public function __construct(){ $this->db = new mysqli('localhost', 'root', 'hal9000', 'myapp_moto'); } public function wolly($myquery,$myfields){ $array_query = array(); $array_fields = explode(",", $myfields); $query = $this->db->query($myquery); $i = 0; while ($row = $query->fetch_array(MYSQLI_ASSOC)){ foreach ($array_fields as $field) { $array_query*[$field] = $row[$field]; } $i++; } return $array_query; } public function __destruct(){ mysqli_close($this->db); } } $attori = new Examples(); echo "<pre>"; print_r($attori->wolly('SELECT * FROM actor LIMIT 5','actor_id,fullname,last_update')); echo "</pre>"; $news = new Codeigniter(); echo "<pre>"; print_r($news->wolly('SELECT * FROM articoli LIMIT 5','id,titolo,sottotitolo')); echo "</pre>";
?>
[/PHP]Così risparmio codice, meglio no?
-
Le classi sono una gran cosa per applicazioni complesse... se però si comincia ad usarle anche per scrivere uno stupido guestbook... allora non ci siamo proprio!
-
Ciao enigma, grazie per la risposta intanto, scusa ma sono un novellino col php; scrivo php procedurale, uso le funzioni ma vorrei passare alla oop, credo sia meglio conoscere come funziona, comunque il codice sopra è un esempio, vorrei solo capire come e quando usare la oop. Grazie mille intanto e buona serata