因为你函数是用了echo,如果用return就不会输出结果的
这时就要这样echo $a->arm();

解决方案 »

  1.   

    首先,php的函数类名都对大小写不敏感.所以你还大小写是没用的.
    楼主的第一个问题会输出是因为类里面的方法与类相同,又没有另外定义构造函数,会被认为是构造函数,所有初始化类的时候会执行同名方法了
      

  2.   

    同楼上,并没有定义构造函数……这也是我纠结的,但是把函数名arm换成其它的单词,就不会有上面的问题……
      

  3.   

    也许我的表达不够明白,php5为了兼容php4,如果你没有定义__construct()的时候,它会去查找与类同名的函数并把它作为构造函数.你这个arm()已经被当作是构造函数了
      

  4.   

    不是也许!
    用以类名命名的方法作为构造函数,是 php 从 C++ 借鉴过来的
    用 __construct 作为构造函数,是 php 从 Java 借鉴过来的
    两者在 php5.4 之前可以并存。但从 php5.4 起,就只能用其一了,否则将会有一个 Redefining already defined constructor (重新定义已定义的构造函数)错误警告class A {
      function A() {}
      function __construct() {} //Strict Standards: Redefining already defined constructor for class A in ...
    }
      

  5.   

    这是老版本的构造函数 函数名和类名相同 相当于现在的__construct
      

  6.   

    等价于:
    <?php
    header("Content-Type:text/html;charset=utf-8");
    class Arm
    {
        private $num = 2;
        public function __construct()
        {
            echo "我有".$this->num."双手!<br />";
        }
    }
    $a = new Arm();
    ?>在之前的PHP版本中,构造函数使用和类名同名来进行对象的初始化工作,但后面发现如果要更改类名,同时就要更改它的构造方法,所以在PHP5中,就被用__construct()函数来实现
      

  7.   

    php的函数类名都对大小写不敏感
    所以不要用别的语言里的方法判断,你写大写和小写结果是一样的
      

  8.   

    PHP 对方法名字是不敏感的,照着你的例子我也试了下, 就是那样的 同名的方法 相当于__construct()
      

  9.   

    在php4当中    方法名和类名相同的情况下 在实例化当前类的时候执行此方法. 相当于php5当中的__construct() ,而且好像方法名和类名相同的执行效率更高..  只是不利于后期维护..    当类名修改就不行了