La Juventus ha perso la champions? Per forza i giocatori non si allenavano!

Allegri ha capito perchè ha perso champions, perchè tra un allenamento e l’altro qualcuno tagliava. Ma adesso per vincere il triplete prossimo anno ecco lo strumento che serve per monitorare la situazione: il nuovo potentissimo applicativo FWD traccia il potenziale campione, che consiste nel fare l’appello ogni mattina a Vinovo prima degli allenamenti! Bonucci c’è stamattina? Presente! Bernardeschi è di nuovo andato dalla ragazza? No, ce sta anche lui! De Sciglio si vede stamattina? SI non manca mai è uno di quelli che ha bisogno di allenarsi di più! Stavolta sono tutti sgamati e la champions non sfuggirà il prossimo anno. E dire che tutto ciò è stato reso possibile seguendo i tutorial di Umbriaway Consulting su PHP e MySQL. Quindi con un approccio pratico andiamo subito al sodo e diamo scacco matto in poche mosse ai problemi di Allegri.

Mossa numero 1: procurarsi un editor di testo, che sia Atom piuttosto che Visual Studio Code piuttosto che Sublime Tetx poco importa.

Mossa numero 2: scaricare XAMPP il server locale per testare l’applicazione

Mossa numero 3: iniziare a pensare alla struttura del progetto come file system e preoccuparsi di creare un file di configurazione per il nostro collegamento al DB, che chiameremo config.php

Mossa numero 4 scaricare dalla rete il noto framework bootstrap nella sua forma sintetica e inserire il nuovo file di nome inequivocabile bootstrap.min.css all’ interno di una cartella che chiameremo inc come inclusione, quindi il path completo del file sarà: inc\bootstrap.min.css ; per includere bootstrap nei nostri progetti serve anche il file JS che si può scaricare in rete quindi all’ interno della cartella INC troveremo alla fine anche inc\bootstrap.min.js

Mossa numero 5, includere JQuery nei nostri progetti, dalla rete scaricare il file jquery.min.js (il suo contenuto per fare copia e incolla in locale) e inserirlo nella stessa cartella di inclusione per cui avremo inc\jquery.min.js

Mossa numero 6, creare una nuova cartella che conterrà due nuovi file, Studenti.php e Database.php, il primo ci servirà per la gestione dei calciatori juventini e sul secondo avremo le coordinate di connessione al DB sfruttando le costanti presenti nel file di configurazione

Mossa N 7, creare nella root del file system appena creato il file primario definito come index.php e scrivere il codice strutturale tipico usando la semantica dei tag html, head, title, body, div includendo nell’ head anche il framework bootstrap con le sue classi da utilizzare nel body , quindi la parte superiore della ns pagina sarà:

/*
<?php include ‘inc/header.php’;
include ‘lib/Student.php’;
?>

Serial Student Student Roll Attendance
01 Rugani 10 P
A

03 Bernardeschi 11 P
A

04 De Sciglio 12 P
A

</div>

<?php include ‘inc/footer.php’ ?>

*/

Mossa numero otto, identificare la data degli allenamenti, questo si ottiene aggiungendo subito dopo la classe panel-body il seguente DIV con la classe predefinita di bootstrap:

/*

Date:

*/

Mossa numero 9, aggiungere il php dinamico con la funzione date per la stampa

/*

Date:

*/

Mossa numero dieci, aggiungere lo stile in linea per rendere esteticamente visibile la stampa video dell’ oggeto date:

/*

Date:

*/

A questo punto la parte statica del progetto é completata e non ci resta che dinamicizzare il tutto con il registro delle presenze dei calciatori in una delle prossime puntate. Buona champions a tutti!

Annunci

Programmazione procedurale oppure OOP? This is the problem!

La programmazione ad oggetti ha sempre suscitato vere e proprie guerre concettuali, tra sostenitori delle due fazioni. C’è chi sostiene che senza OOP non si potrebbero mettere in piedi dei progetti complessi. E c’è chi sostiene che la procedurale basta e avanza per spedire una mail con gli allegati. Senza la programmazione procedurale non si potrebbe imparare l’Object Oriented Programming che è solo un approccio diverso per fare cose diverse. OOP non è un modo migliore per programmazre, è solo un modo diverso, dipende dal tipo di progetto che si vuole mettere in piedi. OOP è una filosofia di programmazione. Per fare OOP devi astrarre le cose. Casa, auto, stufa sono oggetti concreti con cui familiarizziamo ogni giorno. Per andare sulla luna ci sono decine di fasi e sottofasi in sequenza come per fare una torta o un semplice caffè. OOP richiede tutta una pianificazione anticipata a tavolino, se dico sedia devo definire le proprietà dell’ oggetto come colore e numero di gambe e i metodi o funzioni o azioni da mettere in atto: spostare la sedia, rovesciare la sedia etc, in base alla manipolazione dei dati che intendiamo operare. La programmazione procedurale è istintuale, la OOP è un paradigma, prima mi devo interrogare su cosa devo fare, poi devo identificare gli oggetti e poi decidere come sono definiti e quali azioni devono effettuare. Solo quando ho tutto chiaro e ho pensato i blocchi utili e necessari potrò mettere in pratica il mio cidce. OOP è una pianificazione fatta in anticipo. I problemi si risolvono con la tastiera sulla procedurale, mentre in OOP basta all’ inizio solo penna e foglio di carta. Su OOP dire classe indica la definizione della classe, mentre l’istanza della classa p il vero e proprio ogetto. Le proprietà sono le variabili con dei valori e i metodi sono funzioni interne alla definizione della classe. La classe è la ricetta di un budino , dove avremo la lista degli ingredienti e la somma delle operazioni da affettuare per arrivare al prodotto reale. Ad esempio la classe clienti nel nostro diagramma UML avrà un nome, un cognome, un indirizzo, una mail, un numero di telefono e dei metodi come recupero indirizzo o mail o cambio anagrafica. Le ricette sono tutte diverse, così come sono diversi gli ingredienti e le funzionalità. Definire le proprietà e le funzionalità è il core di una definizione di una classe. Con OOP posso scomporre un problema in tanti piccoli problemi e posso riutilizzare il codice per le stesse funzionalità. La manutenzione del codice viene semplificata e anche il debug è meno complesso. A questo punto la domanda è: come viene definita una classe in PHP? Ad esempio se abbiamo un libro come dobbiamo astrarre tutte le problematiche annesse? Un libro ha delle proprietà come titolo, quantità a magazzino, codice isbn, autore, costo, numero di pagine, immagine di copertina e ha anche dei metodi come sfogliare le pagine, la condizione delle pagine etc. Idem per una classe AUTO dove ho le proprietà dell’ oggetto da istanziare come colore interno, colore esterno numero di ruote e metodi come messa in moto etc. Anche nelle operazioni di shopping cart avrò accesso ai sistemi di login e di registrazione dei dati, a un carrello che memorizza le operazioni sugli articoli, l’invio per i pagamenti e ciascuno di questi blocchi può essere scomposto in sottoblocco per individuare le responsabilità che ogni oggetto deve avere tipo il cliente spedisce i dati, il cliente registra i dati. Ad esempio l’oggetto ordine deve specificare i dettagli effettuati, l’oggetto di verifica di spedizione sarà a carico dell’ oggetto mail e così via. Bisogna quindi stabilire le proprietà e le funzionalità per ogni oggetto. L’oggetto LOGIN deve avere tutta una serie di caratteristiche, un tipo di codifica per oscurare le pwd, un sistema di verifica per vedere se quella mail esiste e molto altro. Occorre definire quinti tutte le possibilità che il nostro oggetto ha a sua disposizione. Quindi si parte dal nome della classe, si definiscono le prorietà e infine i metodi. La definizione della classe non è l’oggetto che va istanziato. L’oggetto cliente ha una sua anagrafica per esempio. La classe libro per esempio potrà avere questo suo elenco di proprietà che possono anche essere inizializzate ma senza la creazione dell’ oggetto sarebbero inutili, senza i metodi che le leggono e le scrivono. Con public e private definisco il livello di riservatezza delle variabili, si parla di accessibilità rispetto alla visibilità interna o esterna, con delle variabili che in caso di private saranno consumabili solo all’ interno della classe:

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

classe inserita all’interno di una cartella arbitraria che verrà linkata sulla pagina di visualizzazione in questo modo, da notare l’uso della parola chiave NEW che crea l’oggetto vero e proprio:

/*
<?php
require_once “Classi/Libro.php”;
$nlibro = new Libro();
//echo $nlibro;
$nlibro -> titolo = ‘Le tigri di Mompracem’;
var_dump($nlibro);
*/

Una volta che abbiamo la ricetta per realizzare la torta possiamo istanziare e accedere alle proprietà. SI crea quindi la definizione della classe e si istanzia per creare un oggetto reale con la parola chiave NEW. La sintassi é $oggetto=NEW nomeclasse(); che non ha ancora la definizione delle proprietà al suo interno. Per accedere alle proprietà della classe dall’ esterno posso puntare solo sulle variabili di tipo PUBLIC, come visto sopra, omettendo al simbolo del dollaro menzionando la variabile: $nlibro -> titolo = ‘Le tigri di Mompracem’; in questo modo vado a travasare il contenuto della variabile nel vaso corrispondente, perché le variabili sono zone di memoria che conservano i dati.

E se volessi inserire nella definizione della classe un metodo tipo leggoTitolo con visibilità pubblica quindi accessibile dall’ esterno? Dovrò inserire una funzione interna alla classe che mette in moto dei metodi o delle azioni che fanno delle cose, la sintassi sarà $oggetto -> metodo:

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

public function leggoTitolo() {
// return $titolo;
return $this->titolo;
}

}
*/

A questo punto la spontanea domanda, che lo script risolve, come faccio ad accedere a una variabile interna di una classe, trova la sua risoluzione. Bisogna fare molta attenzione alla sintassi perché va introdotta un’ altra parola magica: THIS! Con this possiamo accedere alle variabili interne di una classe: return $this->titolo; e far riferimento alla proprietà dell’ oggetto corrente.

E sevolessi stampare a video titolo e autore dopo aver settato le proprietà grazie a this? Vediamo la definizione della classe e il suo file di lettura:

/*
<?php
class Libro {
public $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
private $quantita;
public function leggoTitoloAutore() {
// return $titolo;
return $this->titolo . ‘-‘ . $this->autore;
}
}
*/

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

$nlibro = new Libro();
$nlibro->titolo = ‘Sandokan’; // con this posso dare un valore alla prorpietà
$nlibro->autore = ‘Salgari’;
echo $nlibro->leggoTitoloAutore();
*/

 

Il risultato finale sarà il seguente: https://www.farwebdesign.com/PHPOOP/5/

 

 

Fa caldo? Per forza usi i condizionatori cinesi al posto delle funzioni php unset e isset

Calma calma il caldo estivo ti dà in testa? Ci scrivono da Vortice Ombroso in provincia di PG chiedendo come faccio a disattivare una pistola carica, pardon a disattivare una variabile? E se volessi verificare il contenuto di una variabile , cioé se il contenitore é pieno o vuoto ossia se c’è il caricatore sulla pistola di PHP? E vabbè che pazienza abbiamo noi (noi é una parola grossa il CEO di umbriaway.eu é Faraoni Enrico) del portale umbro in espansione dinamica da big bang più eclatante del momento? Per sapere se una variabile ha avuto un valore e quindi un contenuto e quindi una assegnazione di memoria o se attualmente é piena devi usare la funzione IsSet($nome variabile) ad esempio IsSet($altezza) ed eventualmente questa funzione come sanno tutti i neofiti in autoapprendimento su PHP si può concatenare con il magico PUNTO . all’ interno di una stringa. E se volessi svuotare una variabile fino a farla diventare vergine? Per portarla a uno stato di non inizializzazione userò l’ìstruzione unset($altezza) in questo modo sono alle origini e se dovessi adesso rieseguire una funzione sopra a questa variabile per vederni il valore IsSet mi restituirebbe un NULL che é diverso da caratteri come “/” o “0”. Prendiamo in esame una funzione base per altezza per trovare l’area di un rettangolo, se dovessi applicare prima alla variabile $altezza prima un UNSET per inizializzarla a NULL e poi usare un IsSet per verificare l’effetto che fa scoprirei che siamo di fornte a un errore del tipo UNDEFINED VARIABLE. IsSet restituisce il valore logico TRUE, FALSE per gli interi e un valore vuoto tra virgolette come valore per le stringhe. Ricordiamoci sempre che sul famoso punto INI abbiamo la possibilità di settare vari parametri e tra questi anche il famoso E_ALL per la segnalazione degli errori che é meglio attivare come funzionalità per il neofita che si appresta ad avere nella sua prima fase di sperimentazione problemi reali con il DEBUG. Come al solito lo studente che fin qui ha avuto la sensazione di avere le ide3e troppo chiare ha bisogno di essere scombinato a livello didattico con il link presente all’ indirizzo: http://php.net/manual/en/function.isset.php. Il manuale spara sentenze: ISSET determina se è impostata una variabile e non è NULL. Se una variabile è stata disattivata con unset (), non verrà più impostata. Isset () restituirà FALSE se si prova una variabile che è stata impostata su NULL. Si noti inoltre che un carattere nullo (“\ 0”) non corrisponde alla costante PHP NULL. Se vengono forniti più parametri, isset () restituirà TRUE solo se tutti i parametri sono impostati. La valutazione va da sinistra a destra e si arresta non appena viene rilevata una variabile non impostata. Tutto chiaro eh?! Certo funzioni torbide come l’acqua del Tevere. Ok nella seconda lettera di San Taffazzi da Brescia a ceofiti la domanda posta ai miscredenti é: posso io profano mescolare PHP e HTML? La risposta era dentro di te ed era giusta Sig Taffazzi, tramite la commistione dei tag <? e bla bla bla ?> intercalati tra i tag HTML puoi indicare al PARSER di PHO che cosa deve macinare e quale metallo vile trasformare in oro. Certamente devi stare attento a posizionare gli script PHP nei punti giusti in modo anche da facilitare il caricamento della pagina e non ostacolare il rendering della pagina. Il Sig. Astrubale da San Marino ci chiede se nel PHP.INI posso andare ad abilitare gli array superglobali. La risposta é si, ricordiamo che i sei big array sono $_server, cookie, env, files, get, post e che alcune espressioni di abilitazione si trovano nel file sopra citato sotto forma di iniziali come ad esempio GPC , in questo caso specifico mancherebbe la E di $_ENV per esempio come iniziale e usando tale array superglobale senza abilitazione non produco il risultato atteso dall’ istruzione, ossia la stampa di alcune variabili di ambiente tematiche per esempio. Ricordiamo che i BIG ARRAY SUPERGLOBAL sono sei in quanto il famoso $_REQUEST deriva dai tre elementi $_COOKIE, $_GET, $_POST. Speriamo con questa esauriente risposta di avere appagato le esigenze formative del sig. Astrubale. Infine rispondiamo anche ai molti che ci hanno chiesto dal Molise se i database relazionali come MySQL si possono gestire anche con strumenti essenzialmente Microsoft con software tipo Sql Server Express. La risposta é si e ovviamente ci sono molti strumenti free in rete che consentono una gestione grafica delle query per automatizzare velocemente i processi anche di apprendimento, perché il tema sui DB é molto vasto e complesso ed esistono figure professionali dedicate che strutturano i DB in maniera logica e performante con tutte le relazioni delle chiavi primariead hoc.