php 未定义的属性:普朗蒂拉::$mihtml [副本]

qjp7pelc  于 2023-02-07  发布在  PHP
关注(0)|答案(1)|浏览(118)
    • 此问题在此处已有答案**:

Constructor in PHP(2个答案)
22小时前关门了。
我在7.4中有以下代码,它对我有效,现在在8.1中它对我无效...我通过替换foreach更正了它,但仍然有以下错误
未定义的属性:普朗蒂拉::$mihtml
我希望你能帮助我我不知道如何解决这个问题

<?php
    class Plantilla{
    function Plantilla($template_file){
        $this->tpl_file =$template_file ;
    }
    function asigna_variables($vars){
        $this->vars= (empty($this->vars)) ? $vars : $this->vars . $vars;
    }
    function muestra(){
     
            $this->template_file = $this->tpl_file;
         
            $this->mihtml = $this->template_file;
            $this->mihtml = str_replace ("'", "\'", $this->mihtml);
            $this->mihtml = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml);
            reset ($this->vars);
 
                foreach($this->vars as $key => $val) {

                $$key = $val;
            }
            eval("\$this->mihtml = '$this->mihtml';");
            reset ($this->vars);
            foreach($this->vars as $key => $val)
            {
                unset($$key);
            }
            $this->mihtml=str_replace ("\'", "'", $this->mihtml);
            return $this->mihtml;
            //AQUI SI QUEREMOS USARDEFRENTE EN  PARA MOSTTRAR SE DEBE CAMBIAR A ''ECHO'
         
    }
}


$COD_RANDOM ='1234567899999999999999999999999999999999999';

    $Contenido=new Plantilla('el codigo es {CODIGO_RANDOM}');//al Pasar como parametro Prueba, asumimos que en la carpeta   plantillas existe un archivo de nombre Prueba.tpl
    $Contenido->asigna_variables(array(
                    "CODIGO_RANDOM" => $COD_RANDOM  //codigo generado
                    ));
    #$ContenidoString = $Contenido->muestra();//$ContenidoString contiene nuestra plantilla, ya con las variables asignadas, fácil no?
 
      $mensajebody=$Contenido->muestra();
 
  echo  $mensajebody;
?> ```

espero me puedan ayudar por favor
ycl3bljg

ycl3bljg1#

创建$Contenido对象时,您将提供$template。

new Plantilla('el codigo es {CODIGO_RANDOM}');

你的意思是把它设置为类的局部属性,但是PHP中的构造函数不是通过类名调用,而是通过特殊的名称__construct()调用
类的代码应该以下面的代码开头

class Plantilla
{
    function __construct($template_file)      //<-- this function name changes
    {
        $this->tpl_file = $template_file;
    }
}

请遵循本手册:https://www.php.net/manual/en/language.oop5.decon.php

相关问题