PHP yeni bir üye değişken eklemek nasıl?

4 Cevap php

Ben böyle bir şey yapmak istiyorum:

class Name{
    function assign($name,$value){
    }
}

Oldukça fazla assign smarty aynı Hangi

$smarty->assign('name',$value);
$smarty->display("index.html");

Bu nasıl uygulanacağı?

4 Cevap

Soru biraz belirsiz. Ileride kullanmak için yaklaşık $ isim $ değerini tutmak istiyorsanız gibi bir şey yapabilirsiniz:

class Name {

    protected $_data= array();

    function assign($name,$value) {
      $this->_data[$name]= $value;
    }
}

Sonra bir de şablon dosyasında değişkenler kullanılabilir yapmak için:

class Templater {

    protected $_data= array();

    function assign($name,$value) {
      $this->_data[$name]= $value;
    }

    function render($template_file) {
       extract($this->_data);
       include($template_file);
    }
}

$template= new Templater();
$template->assign('myvariable', 'My Value');
$template->render('path/to/file.tpl');

Ve yol / / file.tpl içeriyorsa:

<html>
<body>
This is my variable: <b><?php echo $myvariable; ?></b>
</body>
</html>

Böyle çıkışını alabilirsiniz

Bu benim değişkendir: My Value

class Name{
    private $_vars;
    function __construct() {
        $this->_vars = array();
    }

    function assign($name,$value) {
        $this->_vars[$name] = $value;
    }

    function display($templatefile) {
        extract($this->_vars);
        include($templatefile);
    }
}

extract() çağrı geçici değerler dizisi değerlerine karşılık gelen her anahtar için adlandırılmış değişkenler olarak ortaya bir dizi anahtar-değer çiftleri çeker.

Ben söyleyebilirim

class Name{
    private $_values = array(); // or protected if you prefer
    function assign($name,$value){
       $this->_values[$name] = $value;
    }
}

Eğer html dosyasına değişkenleri kullanılabilir hale getirmek için genel kayıt defteri sınıf oluşturmanız gerekir.

class registry { private $data = array();

 static function set($name, $value)
 {
      $this->data[$name] = $value;
 }

 static function get($value)
 {
       return isset($this->data[$name]) ? $this->data[$name] : false;
 }

}

ve dosyaları bu gibi erişim:

Kayıt :: ('benim zaten ayarlanmış değer') olsun;