2010-05-23 58 views
2

通常我討厭用新手代碼問題來到這裏,但沒有人可以用此代碼找到錯誤。也許你們可以:-)在我的php代碼中出現隨機語法錯誤,我無法找到

<?php 
defined('SYSPATH') or die('No direct script access.'); 

/** 
* to interact with photos 
* 
* @author Max Padraig Wolfgang Bucknell-Leahy 
*/ 
class Model_Photos 
{ 
    private $apiKey = '12664498208a1380fe49fb1b5a238ef0'; 
    private $secret = '03d43dee65a34513'; 
    private $perms = 'read'; 
    private $sigString = 'test'; 
    private $apiSig = md5($_sigString); //Line 15 
    private $authArray = array('api_key' => $apiKey, 
           'perms' => $perms, 
           'api_sig' => $apiSig); 
    private $authArrayImploded = implode('&', $authArray); 
    private $authLink = 'http://www.flickr.com/services/auth/?' . $authArrayImploded; 

    public function get_photos($number = 5) 
    { 
     if(file_exists(APPPATH . 'cache/main_cache.xml') 
     { 
      echo $authLink; 
     } else { 
      echo 'not so good'; 
     } 
    } 
} 

$class = new Model_Photos; 

$class->get_photos; 

的錯誤是:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in /home/p14s9nnd/public_html/testing.php on line 15

預先感謝您和遺憾

問候, 最大

+0

我很希望我有足夠的代表編輯帖子。我真的無法閱讀你的問題,因爲你格式不好的代碼。 – Felix 2010-05-23 23:00:28

+1

順便說一句,我不知道這是否是有意的,但你首先定義一個'$ sigString'變量,並在下一行使用一個叫'$ _sigString'。只是說。 – Javier 2010-05-23 23:00:55

回答

2
if(file_exists(APPPATH . 'cache/main_cache.xml') 

缺少一個右括號?

1

我不認爲你可以在PHP中定義類成員時使用函數或變量。

所以這裏這個線接錯:

private $apiSig = md5($_sigString); 
'api_key' => $apiKey, 
'perms' => $perms, 
'api_sig' => $apiSig 
private $authArrayImploded = implode('&', $authArray); 
private $authLink = 'http://www.flickr.com/services/auth/?' . $authArrayImploded; 

看看這裏:http://ch.php.net/manual/en/language.oop5.properties.php

This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

+0

真的嗎?嗯,這似乎不友好,這將解釋很多。謝謝 – maxbucknell 2010-05-23 23:04:14

+0

實際上,如果他們沒有執行這個規則,那麼你的類變量默認值可能會意外地改變,這取決於何時該類首次被包含。 – 2010-05-23 23:07:36

4
private $apiSig = md5($_sigString); 

聲明類屬性時,不能使用函數/方法。這應該是你的錯誤的原因,但正如其他人指出的,這個代碼有幾個問題會阻止它執行。

0

邁克B的第一個解析錯誤,第一正確的答案,但這些線都不會工作,要麼:

// this array declaration won't work because you can't reference variables 
// ($apiKey, $perms, $apiSig) in a class declaration. 
private $authArray = array('api_key' => $apiKey, 
    'perms' => $perms, 
    'api_sig' => $apiSig); 

// you can't call functions in class declaration 
private $authArrayImploded = implode('&', $authArray); 

// you can't use the '.' operator (or any other operator) here. 
private $authLink = 'http://www.flickr.com/services/auth/?' . $authArrayImploded; 

你應該初始化所有這些值在構造函數中。

相關問題