PHP, OOP, magic method e costruttori

Articoli precedenti su tema OOP:

https://umbriawayinfo.wordpress.com/2019/04/07/programmazione-procedurale-oppure-oop-this-is-the-problem/

https://umbriawaypotenzia.wordpress.com/2019/04/07/php-versione-sette-introdotte-nuove-direttive-per-trasformare-il-linguaggio-in-fortemente-tipicizzato/

https://umbriawaysemplifica.wordpress.com/2019/04/08/ambito-di-visibilita-delle-variabili-in-php-public-protected-private/

web developer umbriaVediamo adesso esempi visti negli articoli precedenti dove è palese che la definizione delle proprietà viene richiesta all’ utente ma che fare quando vogliamo ottenere un oggetto compiuto che abbia al suo interno già le proprietà inizializzate e definite con dei valori senza dover accedere all’interno della classe e settare queste variabili? Si ricorre ai metodi magici di PHP che iniziano con __ (due volte underscore) in questo caso scomodiamo il metodo COSTRUTTORE. Senza il costruttore dobbiamo andare noi a definire i valori delle proprietà di volta in volta, con quelle ambiguità legate alla visibilità delle variabili che possono indurci all’ errore senza l’uso della parola chiave THIS che fa riferimento all’ oggetto corrente quando non abbiamo a che fare con PUBLIC:

/*
<?php
class Libro {
public $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
public $quantita;

}

output indirizzo: https://www.farwebdesign.com/PHPOOP/9/index.php

<?php
require_once “classi/Libro.php”;

$nlibro = new Libro();
var_dump($nlibro);
$nlibro->titolo = ‘Sandokan’;
$nlibro->autore = ‘Salgari’;
$nlibro->codiceisbn = ‘123ASWE’;
$nlibro->qta = 10;
echo “<br>”;
var_dump($nlibro);

*/

mentre con il costruttore caratterizzata dalla sintassi public function __construct($tit,$aut,$cod,$qta=1) ci accingiamo a creare un oggetto completo che ha le sue proprietà inizializzate e definite, senza dover intervenire in corsa:

/*

<?php
class Libro {
public $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
public $quantita;
public function __construct($tit,$aut,$cod,$qta=1) {
$this-> titolo = $tit;
$this-> autore = $aut;
$this-> codiceisbn = $cod;
$this-> quantita = $qta;
}
public function getTitolo() {
return $this->titolo;
}
}

output con index1.php indirizzo https://www.farwebdesign.com/PHPOOP/9/index1.php, da notare il Sandokan finale dovuto alla stampa dell’ istruzione:
echo $nlibro->getTitolo();

<?php
require_once “classi/Libro1.php”;

$nlibro = new Libro(‘Sandokan’,’Salgari’, ‘1234ASB’);
var_dump($nlibro); //il var_dump è una funzione che stampa il tipo di dati
echo “<br>”;
echo $nlibro->getTitolo();

*/

Con new creiamo una istanza della classe, ma questo sistema non ci fa inizalizzare tutte le proprietà del nostro oggetto e i valori delle variabili devono venire precisati dopo, mentre con l’introduzione del costruttore creo un oggetto già personalizzato sulla base dei parametri che gli vado a passare. Dopo la parola NEW, il metodo costruttore forgia il nostro oggetto inserendo dei valori, ne consegue che questo metodo NON PUO’ RESTITUIRE DEI VALORI perchè non fa altro che dare forma compiuta al nostro oggetto con dei valori assegnati alle proprietà. Il costruttore che è la prima funzione che viene richiamata in una classe inizializza tutte le nostre variabili in una sola stringa. A questo punto non ci resta che perfezionare la nostra classe libro anche in ambito sicurezza, ciò verrà affrontato in una delle prossime puntate!

Annunci

Davide batte Golia, quando una mossa come 13 Ag5 rende vano qualsiasi commento, anche quelli in PHP!

Qualcuno ha mai sentito nominare un certo Cordes? Aveva il bianco contro Miles nel 1985 a Bad Warisofen che non so dove stà e a un certo punto salta fuori da qulche lontano universo parallelo una mossa pazzesca come 13 Ag5, certamente sono gli anni più belli per gli scacchi giocati, quelli in cui la matematica e l’informatica erano ancora mescolati alla componente umana. Che può fare Miles, magari difende il pedone con Tf8 ma ecco arrivare uno schema da matto anomalo con 14 De5 scacco. Vabbé so quei pochi minuti di celebrità che tutti prima o poi nella vita attraversiamo se non altro quando ci tocca imprecare alle poste quando qualcuno ci passa davanti. E che succcederà mai, il nero sembra averla sfangata con materiale del tutto pari dopo che quella casa d6 diventa il trampolino di lancio tattico per tutti i giochetti sterili del bianco. Sterili? Alla mossa 19 ecco arrivare una semplice spinta di apertura delle linee con il re nero ormai sfinito e si riaprono le danze fino a quando il nero viene piegato e costretto a perdere materiale. Grande prestazione di Cordes quindi http://www.chessgames.com/perl/chessgame?gid=1097651 ma i misteri sopra questa partita rimangono e Giacobbo che fa? Chi é questo Cordes e perché nessuno lo conosce e come mai ha tirato fuori una prestazione da urlo? E ora con seo specialist Umbria saltiamo a PHP. In molti casi se si desidera che siano visualizzati tutti i messaggi di errore durante lo sviluppo, ma non in fase di produzione si può agire sul PHP.ini. Immettere error_reporting =0 e nella pagina web non verrà visualizzato nessun messaggio di errore. E’ possibile registrare i messaggi di errori in un file di LOG invece di disattivarli completamente. Si utilizzano due impostazioni nel file php.ini: impostare log_errors = On e error_log = percorso/nomefile. RISULTATO: gli errori PHP vengono registrati nel file dal nome specificato. Per maggiori delucidazioni rimandiamo all’ articolo scritto da seo specialist Umbria all’ indirizzo https://umbriawayamplifica.wordpress.com/2018/01/04/messaggi-di-errore-in-php-e-mosse-bastarde-non-e-un-titolo-cult-del-nobel-della-letteratura-kazuo-ishiguro-ma-una-scelta-infida-di-kortchnoi-contro-ljubojevic-a-linares-nel-1985/. E ora in seguito a numerose interrogazioni nell’ aula parlamentare di Umbriaway Consulting cerchiamo di dare una risposta al signor Marzullo di strada del Mughetto a Gallipoli: come faccio a escludere porzioni di codice senza cancellarle? L’argomento é stato affrontato numerose volte e rischia di scapparci il morto ma rispondiamo in maniera cortese. I commenti sono note incorporate nello script. PHP ignora i commenti. I commenti forniscono informazioni per la persona che deve decodificare il codice e capire come si é intervenuti nello script e per fare cosa. I commenti vengono anche usati e utilizzati per circoscrivere la semantica del codice e le sezioi critiche della struttura di una pagina. I commenti semplificano e non complicano e vanno usati, sentenzia Faraoni Enrico CEO di Umbriaway Consulting. I commenti possono avere la distanza desiderata e possono essere inseriti ovunque nello script. Il PARSER PHP ignora queste sezioni di codice e trascura eventuali TAG che sono annidati all’ interno di un commento. Con /* indichiamo l’inizio di un commento mentre con */ ne circoscriviamo la fine. Il blocco può trovarsi su più righe se necessario ad esempio /* testo del commento ….*/ é anche possibile indicare un commento di una sola riga. I caratteri // e # indicano l’inizio di una SOLA RIGA di commento. Non esistono regole sulla formattazione dei commenti, spesso gli autori degli script oltre a segnalare il nome e i dettagli del codice inseriscono delle vere bacheche. I commenti possono essere inseriti anche dopo che abbiamo iniziato a dare istruzioni. Vediamo alcuni esempi di commenti validi:

# questa riga é un commento
// anchye questa riga é un commento
$age=21; // il commento inizia qui

###############################
#commento
###############################

/* name= login.php
* descrizione: …..
* autore …….
* created:…..
*/

Blog su WordPress.com.

Su ↑