Devo includere il codice PHP in HTML o HTML in PHP?

2

Qual è la migliore pratica, per scrivere il mio codice PHP all'interno del mio codice HTML o HTML all'interno di PHP?

PHP all'interno di HMTL:

 <p class="lead">Welcome to the <?= COMPANY_NAME ?> website.</p>

HTML in PHP:

 <?php
      echo '<p class="lead">Welcome to the ' . COMPANY_NAME . ' website.</p>';
 ?>

C'è una differenza nelle prestazioni? Qual è la migliore pratica? Come in, che produrrebbe il codice che è meglio mantenuto.

Anche COMPANY_NAME è definito come tale:

define("COMPANY_NAME", 'MyCompany');
    
posta J_Strauton 04.08.2015 - 18:53
fonte

4 risposte

4

Che dire:

Il mixaggio delle lingue non è una buona idea. Non inserisci JavaScript in HTML, o HTML in JavaScript o JavaScript in PHP o HTML in Python o Ruby in SQL.

Perché non lo facciamo?

Perché diverse lingue di solito corrispondono a diversi livelli.

PHP si occupa della logica aziendale. L'HTML si occupa della presentazione degli oggetti di business. Quindi, hai due livelli: quello genera gli oggetti; l'altro costruisce una rappresentazione pseudo-XML di quegli oggetti.

Allo stesso modo, JavaScript si occupa dell'interazione e CSS con la presentazione del contenuto. Quando vuoi cambiare interazione, non apri un file .html e sicuramente non apri un file .php: apri un file .js o .coffee.

Mescolando la logica all'interno dello stesso file, noterai rapidamente che mantenere il codice diventa sempre più difficile. Vuoi cambiare il metodo che applica i rimborsi ai prodotti e trascorri quindici minuti sfogliando un mix di HTML con istruzioni PHP qua e là e il codice PHP con HTML dappertutto.

Il fatto che tecnicamente PHP permetta di combinare HTML e PHP è irrilevante. La funzione è disponibile per ragioni storiche, ma non dovrebbe essere più utilizzata.

Che cosa dovresti fare?

Quello che stai probabilmente cercando è chiamato templates . A seconda del framework che utilizzi, potrebbe essere già disponibile, di solito sotto una forma di MVC, in cui il modello è nella visualizzazione, oppure potresti dover utilizzare un motore di template di terze parti, come Smarty .

In entrambi i casi, l'idea rimane la stessa. Il codice PHP è strettamente separato dal modello che contiene l'HTML e un po 'di logica molto semplicistica: loop semplici su entità, condizioni per la visualizzazione condizionale di informazioni, ecc. Quando il codice PHP è pronto, chiama il motore del template, passando a alcune informazioni. Il motore utilizza un modello specifico per generare l'output finale (spesso HTML, ma anche altri formati sono possibili) che viene poi inviato all'utente.

Usando i modelli, ci si assicura che si abbia una stretta separazione tra la logica aziendale e il modulo che si dà a questa logica attraverso i modelli. Un giorno, puoi lanciare tutti quei modelli e scrivere altri, senza modificare una singola riga di codice PHP. Oppure puoi creare una serie di modelli per una versione mobile del sito web.

Un ulteriore vantaggio è che non sei nemmeno bloccato con l'HTML. Se è necessario creare un'API basata su 1: 1 sulle pagine Web effettive del sito Web, anziché applicare il modello, serializzare su JSON l'oggetto che stava per essere inviato al motore del modello. Con praticamente zero sforzi, aggiungi funzionalità API a un'app, cosa che non potrebbe essere possibile senza una grave riscrittura se stavi missando PHP e HTML.

    
risposta data 04.08.2015 - 22:01
fonte
1

Potresti avere una migliore possibilità di risolvere le differenze Sunni / Shite di quella di ottenere una risposta chiara a questo tipo di domanda.

Per quanto mi riguarda, mi piace la nozione di componenti e PHP di React s sintassi heredoc.

class CompanyComponent
{
    public function __construct($company)
    {
        $this->company = $company;
    }
    protected function escape($string)
    {
        return htmlspecialchars($string, ENT_COMPAT | ENT_HTML5, 'UTF-8');
    }
    public public function render()
    {
        $companyName = $this->escape($this->company['name']);
        return <<<EOT
<p class="lead">Welcome to the {$companyName} website.</p>
EOT;
    }
}
$companyComponent = new CompanyComponent(['name'=>'Trump']);
echo $companyComponent->render();
    
risposta data 04.08.2015 - 21:18
fonte
0

Il più leggibile è php in html ma solo un po '. Dovresti dividere il file in due parti. Logica in alto. Qui si preparano tutte le variabili ma non l'html.

In basso metti html con variabili e un ciclo o due, ma poca o nessuna logica.

Ovviamente questo non va molto bene. Per progetti più grandi dovresti probabilmente usare un framework mvc.

    
risposta data 04.08.2015 - 22:00
fonte
-1

Penso che dipenda. Se stai usando un po 'di PHP per creare un elenco tramite il loop, ha senso inserirlo in HTML. Se il tuo PHP è esteso e sta generando la maggior parte dell'HTML, potrebbe avere senso fare HTML in PHP.

    
risposta data 04.08.2015 - 22:13
fonte

Leggi altre domande sui tag