WPDK  1.5.0
WordPress Development Kit
 All Data Structures Files Functions Variables Pages
wpdk-object.php
Go to the documentation of this file.
1 <?php
16 class WPDKObject {
17 
29  public $__version = '1.0.0';
30 
39  public function __className()
40  {
41  return get_called_class();
42  }
43 
52  public function __parentClass()
53  {
54  return get_parent_class( $this );
55  }
56 
76  public function __isClass( $class )
77  {
78  return ( $class == get_class( $this ) );
79  }
80 
99  public function __isSubclassOfClass( $class )
100  {
101  return is_subclass_of( $this, $class );
102  }
103 
104 
118  public static function __delta( $last_version, $old_version )
119  {
120  $last_version_stack = array();
121  $old_version_stack = array();
122 
123  /* Creo un elenco di tutte le proprietà della classe $old_version. Questo elenco mi indica il nome della
124  proprietà e il tipo.
125  */
126  foreach ( $old_version as $key => $value ) {
127  $old_version_stack[$key] = $value;
128  }
129 
130  /* Ora ciclo nella versione recente */
131  foreach ( $last_version as $key => $value ) {
132  /* Se la precedente versione non contiene la proprietà di quella nuova, la imposto con il valore di default. */
133  if ( !isset( $old_version_stack[$key] ) ) {
134  $old_version->$key = $value;
135  }
136 
137  elseif ( empty( $old_version_stack[$key] ) || is_null( $old_version_stack[$key] ) ) {
138  $old_version->$key = $value;
139  }
140 
141  /* La proprietà esiste. */
142  else {
143  /* Se la proprietà c'è potrebbe essere a sua volta un oggeto, quindi controllo ed eventualmente ciclo su
144  questo.
145  */
146  if ( is_object( $value ) ) {
147  self::__delta( $value, $old_version->$key );
148  }
149  }
150  }
151 
152  /* Precedentemente abbiamo controllato per 'mancanze' nella vecchia classe, ora facciamo un controllo speculare
153  cioè verifichiamo che la nuova struttura non abbia eliminato qualcosa.
154  Come nel caso precedente creo un elenco delle proprietà dell'ultima versione.
155  */
156  foreach ( $last_version as $key => $value ) {
157  $last_version_stack[$key] = $value;
158  }
159 
160  /* Ora ciclo nella vecchia versione */
161  foreach ( $old_version as $key => $value ) {
162  /* Se non esiste più questa proprietà... */
163  if ( !isset( $last_version_stack[$key] ) ) {
164  /* La elimino */
165  unset( $old_version->$key );
166  }
167  }
168  /* Ok, $old_version ora è allineata. */
169  return $old_version;
170  }
171 
172  public static function delta( $last_version, $old_version )
173  {
174  _deprecated_function( __CLASS__ . '::' . __FUNCTION__, '1.4.8', '__delta()' );
175  return self::__delta( $last_version, $old_version );
176  }
177 
187  public static function __dump( $var, $monitor = false )
188  {
189  ob_start(); ?>
190  <pre <?php if( $monitor ) : ?> style="height:100px;overflow-y:scroll;background-color:#222;color:#ffa841" <?php endif; ?>><?php var_dump( $var ) ?></pre><?php
191  $content = ob_get_contents();
192  ob_end_clean();
193 
194  $replaces = array(
195  "=>\n" => ' => ',
196  ' ' => ' ',
197  "\t" => '',
198  );
199 
200  $content = strtr( $content, $replaces );
201  echo $content;
202  }
203 }