<?php
class B {
public static $class2;
public function __construct()
{
self::$class2 = Test::getInstance();
}
public static function ttss()
{
return self::$class2->hello();
}
}
class Test {
protected $s;
protected static $_instance = null;
public function __construct(){
echo $this->s = 'good,job';
}
public function hello()
{
echo $this->s;
echo "<br>",'哈哈!!';
}
/**
* 单例模式实例化本类
*
* @access public
* @return object
*/
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
class B {
public static $class2;
public function __construct()
{
self::$class2 = Test::getInstance();
}
public static function ttss()
{
return self::$class2->hello();
}
}
class Test {
protected $s;
protected static $_instance = null;
public function __construct(){
echo $this->s = 'good,job';
}
public function hello()
{
echo $this->s;
echo "<br>",'哈哈!!';
}
/**
* 单例模式实例化本类
*
* @access public
* @return object
*/
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
}
$c = new B;
$c->ttss(); //ttss()方法 是静态的但是他可以用这种方式访问牛吧,哈哈。在ttss方法内再用->调用Test类中的hello方法,但如果方法hello也改成
public static function hello()
{
echo $this->s;
echo "<br>",'哈哈!!';
}这样的,在ttss方法中就不能再如果调用了这时他会报一个错
“Fatal error: Using $this when not in object context”可见虽然声明了public static function tt()的方式可以用$this->tt()这样的方式在子类中调用,但还是尽量不要这样写为好,静态方法是静态方法 ,非静态为非静态,以免惹上不必要的麻烦,错误还不好找