¿Es posible acceder a $ esto desde el archivo incluido () en la clase PHP?

1 minuto de lectura

Estoy trabajando en un widget de WordPress y todos los ejemplos tienen enormes fragmentos de HTML/PHP entremezclados y es imposible de leer, por lo que, con el fin de tratar de limpiar las cosas, me gustaría mover toda la representación de HTML a un lugar separado. archivo PHP que será include()‘d.

El truco para esto es que el archivo que incluyo no parece tener acceso a $this y no estoy seguro de cómo solucionarlo.

widget.php

class Preorder extends WP_Widget {
    ...
    function form() {
        include('form.php');
    }
}

formulario.php

<p>
   <?php echo $this->get_field_id('title'); ?>
</p>

Lo que resulta en [31-Aug-2011 19:59:19] PHP Fatal error: Call to a member function get_field_id() on a non-object in ... tan claramente $this no viene gratis. He intentado alias $this a otra variable e incluso solo por diversión usando el global palabra clave sin éxito.

Espero haberme perdido algo fácil.

  • Ese código debería funcionar. Si el código es exactamente como se muestra arriba, $this sería accesible en form.php. Probablemente algo más esté pasando en otro lugar.

    – mfonda

    31 de agosto de 2011 a las 20:07


  • De acuerdo con mfonda, el código anterior debería funcionar. Hago exactamente lo mismo en muchos proyectos.

    – Bazzz

    31 de agosto de 2011 a las 20:11

  • Gracias por la verificación de cordura, muchachos, resolvieron el problema.

    – Tivac

    31 de agosto de 2011 a las 20:14

Olvidé que estaba iterando sobre el directorio & include-ing cada archivo .php, renombrado form.php a form.tmpl y parece funcionar.

Durr.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad