2

所以我有两个php类,一个是类,一个用另一个,我的类是:

(菜单.php)

 <?php
public class Menu
{
        $home = '<li><a href="index.html"><span>Home</span></a></li>';
        $home_selected = '<li class="navhome"><a href="index.html"><span>Home</span></li>';

        $projects = '<li><a href=""><span>Projects</span></a></li>';
        $projects_selected = '<li class="navhome"><a href=""><span>Projects</span></a></li>';

        $contact = '<li><a href=""><span>Contact Us</span></a></li>';
        $contact_selected = '<li class="navhome"><a href=""><span>Contact Us</span></a></li>';

        public function getMyMenu($value)
        {
                switch($value) {
                        case "home":
                                return (string) $home_selected . $projects . $contact;
                                break;
                        case "projects":
                                return $home . $projects_selected . $contact;
                                break;
                        case "contact":
                                return $home . $projects . $contact_selected;
                                break;
                }
        }

}
?>

但是,在 index.php 中,无论何时

<?php include("menu.php"); 
      $menu = new Menu();
      echo($menu->getMyMenu("home")); ?>

或者放置任何变体,然后网页就不会加载,例如,如果它放在页面中间,页面的末尾甚至不会发送到浏览器。

我对 php 很陌生,我希望这是一个“duh”的答案,如果您需要更多,请询问;谢谢

4

3 回答 3

3

你的字符串没有被引用。您需要使用'string'不包含变量的字符串,并且"string $var"如果您想将变量值添加到您的字符串。

此外,在脚本的开头写下非常有帮助:

error_reporting(E_ALL);

这启用了完整的错误跟踪,因此 PHP 会告诉您他看到哪个字符串上的哪些问题 - 非常有帮助!

另外,看看你的字符串:

return "hello world";

如果函数将在此字符串上停止,该指令下方的开关将如何工作?如果你希望这个返回作为默认值,你应该把它放在你的开关之后。

于 2012-05-25T02:55:49.493 回答
2

你应该引用('")字符串

$home = '<li><a href="index.html"><span>Home</span></a></li>';

完整代码:

class Menu
{
    private $home = '<li><a href="index.html"><span>Home</span></a></li>';
    private $home_selected = '<li class="navhome"><a href="index.html"><span>Home</span></li>';

    private $projects = '<li><a href=""><span>Projects</span></a></li>';
    private $projects_selected = '<li class="navhome"><a href=""><span>Projects</span></a></li>';

    private $contact = '<li><a href=""><span>Contact Us</span></a></li>';
    private $contact_selected = '<li class="navhome"><a href=""><span>Contact Us</span></a></li>';

    public function getMyMenu($value)
    {
        switch($value) {
            case "home":
                return $this->home_selected . $this->projects . $this->contact;
                break;
            case "projects":
                return $this->home . $this->projects_selected . $this->contact;
                break;
            case "contact":
                return $this->home . $this->projects . $this->contact_selected;
                break;
        }
    }
}
于 2012-05-25T02:52:56.577 回答
0

您需要指定类属性的可见性,例如:

class Menu {
    public $home = ...;
}

另请注意,您不应该public在关键字之前有class. 此外,您的所有字符串属性值都缺少引号。基本上一切都是错误的,你很可能已经show_errors禁用。

于 2012-05-25T02:54:52.317 回答