Ben bulamıyorum benim php kod Rastgele sözdizimsel hata

4 Cevap

Normalde ben acemi kod sorular ile buraya geliyor nefret ediyorum ama kimse bu kod ile hata bulabilirsiniz. Belki siz yapabilirsiniz :-)

<?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;

hata:

Ayrıştırma hatası: sözdizimi hatası, beklenmedik '(', ',' bekliyor veya ';' / home/p14s9nnd/public_html/testing.php line 15

Peşin ve üzgünüm teşekkür ederiz

Regards, Max

4 Cevap

private $apiSig = md5($_sigString);

Sınıf özelliklerini bildirirken işlevleri / yöntemleri kullanamazsınız. Bu hata nedeni olmalı ama diğerleri işaret gibi, yürütme onu tutacak bu kod ile çeşitli sorunlar vardır.

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

bir kapanış ayraç eksik?

PHP sınıf üyeleri tanımlarken işlevleri veya değişkenler kullanabilirsiniz sanmıyorum.

Yani burada bu satırları yanlış:

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;

Buraya bir göz atın: http://ch.php.net/manual/en/language.oop5.properties.php

Bu beyan, bir başlatma içerebilir, fakat bu başlatma sabit bir değer olmalıdır - yani, bu derleme zamanında değerlendirilmesi gerekir ve değerlendirilmesi amacıyla çalışma zamanı bilgileri bağlı olmamalıdır.

Mike B ilk ayrıştırma hatası için ilk doğru cevabı vardır, fakat bu çizgiler ya da çalışmak için gidiş değildir:

// 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;

Siz yapıcısı tüm bu değerleri başlatılıyor edilmelidir.