Terjadi kesalahan saat menugaskan properti publik

function CharField($len)
{
    return "VARCHAR($len)";
}


class ArticleModel extends Model
{
    public $name = CharField(100); // Error Here
}

Saat saya menetapkan properti publik seperti ini dengan nilai yang dikembalikan dari suatu fungsi, kesalahan muncul:

Kesalahan Parse PHP: kesalahan sintaksis, '(', mengharapkan ',' atau ';' yang tidak terduga di /var/www/test/db.php

Apa alasannya?


person Abhilash Nanda    schedule 11.11.2011    source sumber
comment
Apa yang ingin Anda capai? Apakah Anda ingin properti $name berisi string literal VARCHAR(100)? Atau apakah Anda ingin properti $name berupa nilai string hingga 100 karakter?   -  person liquorvicar    schedule 11.11.2011
comment
Sebenarnya saya mencoba menulis implementasi ORM yang sangat dangkal. Kelas ini dapat dibuat subkelasnya dan subkelasnya akan diubah menjadi tabel dengan properti sebagai nama kolomnya. Nanti ketika diakses dengan sebuah objek, kita dapat memperbarui tabel hanya dengan memberikan nilai pada properti... mirip dengan bagaimana Django melakukannya... Pokoknya, saya rasa saya harus mencari cara lain karena ini tidak dapat dicapai dengan cara Saya sedang menuju... Saya harap Anda dapat membantu... Terima kasih!!!   -  person Abhilash Nanda    schedule 11.11.2011


Jawaban (3)


Inisialisasi nilai di konstruktor Anda

person mark_dj    schedule 11.11.2011

Anda hanya dapat menginisialisasi properti dengan konstanta:

http://www.php.net/manual/en/lingual.oop5.properties.php

[Properti] didefinisikan dengan menggunakan salah satu kata kunci publik, dilindungi, atau pribadi, diikuti dengan deklarasi variabel normal. Deklarasi ini mungkin mencakup inisialisasi, namun inisialisasi ini harus berupa nilai konstan--yaitu, harus dapat dievaluasi pada waktu kompilasi dan tidak boleh bergantung pada informasi run-time agar dapat dievaluasi.

Jadi memang, inisialisasi mereka di konstruktor Anda.

person CodeCaster    schedule 11.11.2011
comment
Terima kasih semuanya... Sepertinya aku perlu mencari cara lain... :( - person Abhilash Nanda; 11.11.2011

Menurut manual Anda hanya dapat menetapkan nilai konstan saat membuat instance properti kelas.

person jondro    schedule 11.11.2011