【问题标题】:Php OOP does not workPHP OOP 不起作用
【发布时间】:2016-06-19 19:36:41
【问题描述】:

我有问题。我用php写了OOP,但它不起作用。它给了我空白的结果。我在上面放了我的代码和代码结果的屏幕截图。请分析这些代码并帮助我,我该如何解决。顺便说一下,我的 php 版本是 5.3。如果它很重要,我可以升级或降级它。谢谢。

index.php

<?php include('class_library.php'); ?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>OOP ilk dersim)</title>
</head>
<body>
<?php

    $phpders = new adam();
    $padisah = new adam();
    //----------

    $phpders -> set_ad('NurlanXp 1');
    $padisah -> set_ad('NurlanXp 2');

    //------------

    echo "PhpDersden gelen: ".$phpders -> get_ad;
    echo "<br>Padisahdan gelen: ".$padisah -> get_ad;

?>
</body>
</html>

class_library.php

    <?php
    class adam{
        var $ad;

        function set_ad($yeni_ad){
            $this -> ad = $yeni_ad;

        }

        function get_ad(){
            return $this -> ad;

        }

    }

?>

index.phpclass_library.php 和代码的result。截图。

同一文件夹中的所有文档。

【问题讨论】:

  • 预期输出与实际输出是什么?
  • 另外,您将函数调用与变量混淆了。 get_ad 在代码中应该是get_ad()
  • @num8er 我不会在这里打架,但给出一个关于为什么解决问题的理由可以防止多次重复并帮助 OP 了解他或她的问题更好的。只是给出代码并说“试试这个”,通常不会受到很多人的赞赏。而且你对那个空格是错误的,只要--&gt;之间没有空格就可以了。 $this -&gt; var 是一个有效的语法,而 $this - &gt; var 不是。
  • 版主注意:请在 Stack Overflow 上使用英语进行对话。
  • @num8er:我很感激你想帮助人们,但你不应该在 Stack Overflow 之外解决问题。通过 cmets 或聊天室解决问题是可以的;不是通过 Skype 解决问题。

标签: php oop object


【解决方案1】:

你似乎在使用 $padisah -> get_ad 但你的 adam 类没有任何 getter 方法,所以你必须像这样使用

$padisah -> get_ad();

您可以在https://eval.in/591811 上找到工作示例

在土耳其语中:get_ad kısmının sonunda parantez açıp, kapatırsan sorun çözülür。亚当类'ının içerisinde getter metodu yok。 Yukarıda verdiğim linkte sonundaki parantezle sorunun çözüldüğünü görebilirsin。

【讨论】:

    【解决方案2】:

    这是你的班级:

    <?php
    class adam {
      private $ad;
    
      public function get_ad() {
        return $this->ad;
      }
    
      public function set_ad($ad) {
        $this->ad = $ad;
        return $this;
      }
    }
    

    和代码内部:

      $phpders = new adam();
      $padishah = new adam();
    
      $phpders->set_ad('NurlanXP 1');
      $padishah->set_ad('NurlanXP 2');
    

    get_ad 的使用方法:

    echo 'phpdersden gelen: '.$phpders->get_ad().'<br/>';
    echo 'padishahdan gelen: '.$padishah->get_ad().'<br/>';
    

    【讨论】:

      【解决方案3】:

      (在解决了“num8er”提到的问题后——用()调用方法...)

      尝试给出一个绝对的包含路径

      <?php include('/complete/path/to/class_library.php'); ?>
      

      或者在之前设置一个合适的包含路径set_include_path()。您可以使用$_SERVER['DOCUMENT_ROOT'] 作为基础来构建路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        相关资源
        最近更新 更多