ホームページ > バックエンド開発 > PHPチュートリアル > エラーを報告する 解析エラー: 構文エラー、予期しない 'static' (T_STATIC)、

エラーを報告する 解析エラー: 構文エラー、予期しない 'static' (T_STATIC)、

WBOY
リリース: 2016-06-20 12:52:39
オリジナル
3041 人が閲覧しました

<?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);
ログイン後にコピー

解析エラー: 構文エラー、予期しない 'static' (T_STATIC)、D:Apache24htdocsPHP_OBJECT44.1.2.php の 46 行目の識別子 (T_STRING) が必要です
関数 static getInstance が static の書き込み時にエラーを報告するのはなぜですかこのような変数ですか?静的関数はデータを出力できますか?


ディスカッション (解決策) への返信

関数 static は逆に書かれています。
static 関数

function static は逆に書かれています。
static function


これは php ドキュメントに書かれていますか?

たぶん、それは常識です!

static function getInstance($id,PDO $pdo){
static は関数を変更します。つまり、getInstance という名前の関数は static

であり、 function static getInstance( $id, PDO $pdo){
static の位置が間違っていることは言うまでもありません
関数の後には関数名が続く必要がありますが、static getInstance でよいでしょうか?
関数名を 2 つの部分に分割することはできません。これは文法的ではありません。

たぶん、それは常識です。

static function getInstance($id,PDO $pdo){
static は関数を変更します。つまり、getInstance という名前の関数は static

であり、 function static getInstance( $id, PDO $pdo){
static の位置が間違っていることは言うまでもありません
関数の後には関数名が続く必要がありますが、static getInstance でよいでしょうか?
関数名を 2 つの部分に分割することはできません。文法的ではありません。


class StaticExample{
public static $aNum = 0
private static functionsayHello(){ // private static and static private 両方のソートが可能ですか??
self::$aNum++;
print 'hello ('.self::$aNum.')';

function getSayHello() {
self::sayHello();
}
}

StaticExample::$aNum;
$staticExample = new StaticExample(); getSayHello();
でも、php のバージョンは 5.4.32 です。

読み間違えました。ありがとうございます。お勘定お願いします。

function static getInstance は static function getInstance に変更されます。

static は修飾子であり、文法規則に従って、変更された変数またはメソッドの前に記述する必要があります。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート