2015-12-01 6 views
7

Invio oggetti PHP a file di modello e mi piacerebbe documentare nella parte superiore del mio file di modello quali proprietà dell'oggetto (utilizzando __get) sono disponibili e quali sono e renderle disponibili per il suggerimento del codice.Esiste un DocBlock PHP che posso usare per denotare una proprietà del metodo magico aggiunta dopo l'istanziazione?

Ecco un esempio.

Nel mio controller:

$obj = new Template("welcomePage"); 
$obj->title = "Welcome!"; 
$obj->render(); 

A mio avviso/template:

<?php 
/** 
* @var  $obj   Template The template data wrapper 
* @property $obj->title string  The page header text 
/* ?> 
<h1><?php echo $obj->title; ?></h1> 

C'è qualcosa di simile a questo che avrebbe funzionato? Il modo in cui l'ho ora non si auto-completa se ho iniziato a digitare $obj->, nel senso che io (o un membro del team) deve fare riferimento alla parte superiore del modello per trovare ogni proprietà disponibile.

Stavo considerando l'estensione della classe Template per ogni tipo di modello, ma sembra un sovraccarico non necessario poiché potrei aggiungere solo una stringa e un array per pagina e creare una classe separata per ogni modello, modello parziale e combinazione di entrambi sembra un po 'sciocco.

Grazie ~

+1

Il mio consiglio è di non usare la magia nella maggior parte dei casi causa più problemi che danno vantaggi – Robert

+0

Grazie, Robert. Consiglieresti una classe per tipo di modello, quindi? – Prodikl

risposta

7

No. DocBlocks classi di documenti, non istanze.

Detto questo, PHPDocumentor ha un numero di a livello di classe tag di annotazione per esporre alcune delle magia:

Ma non funzionerebbe per proprietà/metodi dynamicall y aggiunto in fase di esecuzione poiché le proprietà differiscono tra le istanze.

+0

Grazie, questo risponde, allora. Sì, ho usato estensivamente '@ property' sui nostri oggetti ORM, speravo solo che ci fosse un equivalente per le chiavi oggetto assegnate dinamicamente. Grazie! – Prodikl

Problemi correlati