Heim > Backend-Entwicklung > PHP-Tutorial > 报个错Parse error: syntax error, unexpected 'static' (T_STATIC),

报个错Parse error: syntax error, unexpected 'static' (T_STATIC),

WBOY
Freigeben: 2016-06-20 12:52:39
Original
3040 Leute haben es durchsucht

<?phpclass ShopProduct{	  private $id = 0;    private $title;    private $producerMainName;    private $producerFirstName;    protected $price;    private $discount = 0;        function __construct($title,$firstName,$mainName,$price){        $this->title             = $title;        $this->producerMainName  = $mainName;        $this->producerFirstName = $firstName;        $this->price             = $price;    }         function setDiscount($num){        $this->discount = $num;    }        function getDiscount(){        return $this->discount;    }        function getTitle(){        return $this->title;         }        function getProducerFirstName(){        return $this->producerFirstName;	    }        function getProducerMainName(){        return $this->producerMainName;    }        function getId(){        return $this->id;    }        function setId($id){        $this->id = $id;    }        function static getInstance($id,PDO $pdo){        $stmt = $pdo->prepare("select * from products_4 where id =?");        $result = $stmt->execute(array($id));        $row = $stmt->fetch();        if(empty($row)){            return null;        }                if($row['type']=='book'){        	  $product = new BookProduct(        	      $row['title'],$row['firstname'],$row['mainname'],$row['price'],$row['numpages']        	  );        }        elseif($row['type']=='cd')        {            $product = new CdProduct(        	      $row['title'],$row['firstname'],$row['mainname'],$row['price'],$row['playlength']        	  );        }        else{        	  $product = new ShopProduct(        	      $row['title'],$row['firstname'],$row['mainname'],$row['price']        	  );        }                $product->setId($row['id']);        $product->getDiscount($row['discount']);        return $product;    }         function getPrice(){        return "({$this->price} - {$this->discount})";    }        function getProducer(){        return "{$this->producerFirstName}".        " {$this->producerMainName}";    }        function getSummaryLine(){        $base   = "{$this->title} ( {$this->producerMainName}";        $base  .= " {$this->producerFirstName} )";        return $base;    }}class CdProduct extends ShopProduct{    private $playLength = 0;        function __construct($title,$firstName,$mainName,$price,$playLength){        parent::__construct($title,$firstName,$mainName,$price);        $this->playLength = $playLength;    }        function getSummaryLine(){    	  $base   = parent::getSummaryLine();    	  $base  .= ": playing - time {$this->playLength}";    	  return $base;    }}class BookProduct extends ShopProduct{    private $numPages = 0 ;        function __construct($title,$firstName,$mainName,$price,$numPages){        parent::__construct($title,$firstName,$mainName,$price);        $this->numPages = $numPages;    }        function getNumPages(){        return $this->numPages;    }        function getSummaryLine(){        $base   = parent::getSummaryLine();        $base  .= ": page count - {$this->numPages}";        return $base;     }        function getPrice(){        return $this->price;    }}$dsn = "mysql:host=localhost;dbname=test";try{    $pdo = new PDO($dsn,"root","root");    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);    $obj = ShopProduct::getInstance(1,$pdo);}catch(PDOException $e){    echo $e->getMessage();}print_r($obj);
Nach dem Login kopieren

Parse error: syntax error, unexpected 'static' (T_STATIC), expecting identifier (T_STRING) in D:\Apache24\htdocs\PHP_OBJECT\4\4.1.2.php on line 46
function static getInstance 静态变量为什么这样写报错呢? static function 这样就可以输出数据?


回复讨论(解决方案)

function static 写反了,应为
static function 

function static 写反了,应为
static function 


这个在php文档上有写吗?

可能有吧,这是常识!

static function getInstance($id,PDO $pdo){
static 是修饰 function 的,是说名为 getInstance 的 function 是静态的

而你写成 function static getInstance($id,PDO $pdo){ 的话
且不说 static 的位置不对
function 后面应该是函数名,难不成就是 static getInstance ?
函数名也不能拆成两段呀,这不合语法

可能有吧,这是常识!

static function getInstance($id,PDO $pdo){
static 是修饰 function 的,是说名为 getInstance 的 function 是静态的

而你写成 function static getInstance($id,PDO $pdo){ 的话
且不说 static 的位置不对
function 后面应该是函数名,难不成就是 static getInstance ?
函数名也不能拆成两段呀,这不合语法


class StaticExample{
    public static  $aNum = 0 ;
    private static function sayHello(){        // private static 和static private两样排序都可以??
        self::$aNum++;
        print 'hello ('.self::$aNum.')';
    }
    
    function getSayHello(){
        self::sayHello();
    }
}

StaticExample::$aNum;
$staticExample = new StaticExample();
$staticExample->getSayHello();
但是这样没有报错,php版本是5.4.32的

看错了,谢谢您。结账。

function static getInstance 改为  static function getInstance

static是修饰符,按语法规则需要写在被修饰的变量或方法前面。

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage