添加新函数创建了一个未定义的变量

时间:2015-09-19 06:43:37

标签: php function variables undefined

我正在为一个样式指南生成器调整一点PHP以引入.scss文件并显示它,但在第56行我收到通知:未定义的变量。

有问题的行是

$sass = 'sass'.strstr($path, "/");

并且整个functions.php是

<?php

  // Display title of each markup samples as a list item
  function listMarkupAsListItems ($type) {
    $files = array();
    $handle=opendir('markup/'.$type);
    while (false !== ($file = readdir($handle))):
        if(stristr($file,'.html')):
            $files[] = $file;
        endif;
    endwhile;

    sort($files);
    foreach ($files as $file):
        $filename = preg_replace("/\.html$/i", "", $file);
        $title = preg_replace("/\-/i", " ", $filename);
        $title = ucwords($title);
        echo '<li><a href="#sg-'.$filename.'">'.$title.'</a></li>';
    endforeach;
  }

  // Display markup view and source
  function showMarkup($type) {
    $files = array();
    $handle=opendir('markup/'.$type);
    while (false !== ($file = readdir($handle))):
        if(stristr($file,'.html')):
            $files[] = $file;
        endif;
    endwhile;

    sort($files);
    foreach ($files as $file):
        $filename = preg_replace("/\.html$/i", "", $file);
        $title = preg_replace("/\-/i", " ", $filename);
        $documentation = 'doc/'.$type.'/'.$file;
        echo '<div class="sg-markup sg-section">';
        echo '<div class="sg-display">';
        echo '<h2 id="sg-'.$filename.'" class="sg-h2">'.$title.'</h2>';
        if (file_exists($documentation)) {
          echo '<div class="sg-doc">';
          include($documentation);
          echo '</div>';
        }
        include('markup/'.$type.'/'.$file);
        echo '</div>';
        echo '<div class="sg-markup-controls"><button type="button" class="sg-btn sg-btn--source">View Source</button> <a class="sg-btn--top" href="#top">Back to Top</a></div>';
        echo '<div class="sg-source sg-animated">';
        echo '<button type="button" class="sg-btn sg-btn--select">Copy Source</button>';
        echo '<pre class="line-numbers"><code class="language-markup">';
        echo htmlspecialchars(file_get_contents('markup/'.$type.'/'.$file));
        echo '</code></pre>';
        echo '</div>';
        echo '</div>';
        $sass = 'sass'.strstr($path, "/");
        $sass = str_replace(".html",".scss",$sass);
        if (file_exists($sass)) {
          echo '<div class="sg-sub-section">';
          echo '<div class="sg-markup-controls">';
          echo '<button type="button" class="sg-btn sg-btn--source">View Sass</button>';
          echo '</div>';
          echo '<div class="sg-source">';
          echo '<button type="button" class="sg-btn sg-btn--select">Copy Sass</button>';
          echo '<pre class="line-numbers"><code class="language-scss">';
          echo file_get_contents($sass);
          echo '</code></pre>';
          echo '</div>';
          echo '</div>';
        }
    endforeach;
  }
?>

我确定这是一个简单的PHP问题我错了。任何帮助将不胜感激。

更新: $ sass的代码取自另一个片段,看两条评论(谢谢)似乎$ path变量是问题?我想我需要将其定义到我正在寻找的文件夹路径?

1 个答案:

答案 0 :(得分:0)

您需要先定义$ path。您可以在其他地方执行此操作,并使用函数开头的行调用$ path变量到函数中,如:

function showMarkup($type) {
global $path;
// ... etc.

或者在定义函数时为其定义默认值:

function showMarkup($type, $path="my-default-path/") {