Как создать функцию с тем же контекстом, который требуется в PHP? - PullRequest
0 голосов
/ 20 сентября 2011

Этот вопрос вызван ошибкой, когда я пытаюсь использовать это в файле. У меня есть файл с классом для страницы:

class Page {
   function whatHappen()
   {
      echo "this may work";
   }  
   function helloWorld()
   {
       echo "This is my page!";
       require( "usethis.php" );      // --> this works
       similar_require( "usethis.php" );    // ---> with this I get an error
   }
   function write()
   {
       $this->helloWorld();
   }
}

И функция, аналогичная требуемой:

function similar_require( $filepath )
{
   require( $filepath );
}

В файле usethis.php у меня есть это:

<?php
   $this->whatHappen();
?>

Как сделать работу Similar_require и требовать аналогичной функции?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

В usethis.php вы пытаетесь получить доступ к $this, который не объявлен в области действия similar_require.
Читайте о видимости: http://www.php.net/manual/en/language.variables.scope.php

Весь этот кодвыглядит очень грязно: не используйте 'require' или 'include' в методах или функциях - это все равно что использовать globals (а globals - очень плохая вещь).

0 голосов
/ 20 сентября 2011

Может быть, это будет работать:

function similar_require( $filepath, $this )
{
   require( $filepath );
}

и

similar_require( "usethis.php", $this );
...