Yii源码解读-属性
Yii基础
属性 property
属性用于表征类的状态,从访问的形式上看,属性与成员变量没有区别。但是,成员变量是就类的结构构成而言的概念,而属性是就类的功能逻辑而言的概念
Q: 属性和成员变量有什么区别吗?
成员变量是一个“内”概念,反映的是类的结构构成。属性是一个“外”概念,反映的是类的逻辑意义。
成员变量没有读写权限控制,而属性可以指定为只读或只写,或可读可写。
成员变量不对读出作任何后处理,不对写入作任何预处理,而属性则可以。
public成员变量可以视为一个可读可写、没有任何预处理或后处理的属性。 而private成员变量由于外部不可见,与属性“外”的特性不相符,所以不能视为属性。
虽然大多数情况下,属性会由某个或某些成员变量来表示,但属性与成员变量没有必然的对应关系, 比如与非门的 output 属性,就没有一个所谓的 $output 成员变量与之对应。
由
yii\base\Object
提供了对属性的支持
属性的实现
<code>class foo extends yii\base\object{ private $_title; public function setTitle($title){ $this->_title = trim($title); } public function getTitle(){ return $this->_title; } }</code>
属性能够对类实现更好的封装,同时构件入口,对成员变量统一管理。
然而__get()
, __set()
遍历所有成员变量,找不到匹配的成员变量时才被调用。其效率天生地低于使用成员变量的形式。在一些表示数据结构、数据集合等简单情况下,且不需读写控制等, 可以考虑使用成员变量作为属性,这样可以提高一点效率。
自动调用 __get() __set() 的时机仅仅发生在访问不存在的成员变量时。 因此,如果定义了成员变量 public $title 那么,就算定义了 getTitle() setTitle() , 他们也不会被调用。因为 $post->title 时,会直接指向该 public $title。
PHP对于类方法不区分大小写,即大小写不敏感,对属性名也是不区分大小写的。
__get() __set() 都是public的,
static
的方法统统不好使。
Component
Yii自称是基于组建的框架。
yii\base\Component
继承自yii\base\Object
,Component重载了Object中的属性方法,同时也加入了事件和行为。
由于重载加入了事件和行为,Component的性能会笔Object差一点。
Object的配置
Yii的对象配置方法是统一的。所有对象的配置都是通过Object
中的__construct()
来配置。配置的本质就在Yii::configure()
中,他通过配置数组,构建属性。
Q: 如果配置是多维的数组怎么办呢?
Yii在
yii\di\ServiceLocator
中实现了对这一数组的具体处理:setComponents
。
Summary
通过yii\base\Object::__construct()
,我们可以看到,所有对象,包括Component的属性的加载,均有4个阶段,(前三个阶段是一气呵成在一起的)。
预初始化:默认定义Property
Yii::configure()
来加载配置数组,覆盖Property后初始化:
init()
的执行类方法调用阶段。
参考
http://www.digpage.com/
以上就介绍了Yii源码解读-属性,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Setiap tahun sebelum Apple mengeluarkan versi utama baharu iOS dan macOS, pengguna boleh memuat turun versi beta beberapa bulan lebih awal untuk mengalaminya terlebih dahulu. Memandangkan perisian ini digunakan oleh orang awam dan pembangun, Apple telah melancarkan versi pembangun dan awam, yang merupakan versi beta awam bagi versi beta pembangun, untuk kedua-duanya. Apakah perbezaan antara versi pembangun dan versi awam iOS? Secara literal, versi pembangun ialah versi ujian pembangun dan versi awam ialah versi ujian awam. Versi pembangun dan versi awam menyasarkan khalayak yang berbeza. Versi pembangun digunakan oleh Apple untuk ujian oleh pembangun Anda memerlukan akaun pembangun Apple untuk memuat turun dan meningkatkannya.

Memanggil kaedah beranotasi @Bean dalam kelas @Configuration mengembalikan contoh yang sama; memanggil kaedah beranotasi @Bean dalam kelas @Component mengembalikan kejadian baharu.

1. Pengenalan dinamik asas komponen: Pengenalan dinamik ringkas bermaksud bahagian hadapan mengetahui komponen yang hendak diperkenalkan, dan memperkenalkan berbilang komponen ke dalam komponen induk, tetapi tidak menjadikannya selepas syarat tertentu dipenuhi, ia akan dipaparkan pada tahap tertentu lokasi. import{reactive,ref,shallowReactive,onActivated,defineAsyncComponent,}from'vue';constcustomModal=defineAsyncComponent(()=>import('./modal/CustomM

Tajuk ialah makna yang mentakrifkan tajuk halaman web Ia terletak dalam teg dan teks yang dipaparkan dalam bar tajuk pelayar adalah sangat penting untuk pengoptimuman enjin carian dan pengalaman pengguna halaman web. Apabila menulis halaman web HTML, anda harus memberi perhatian kepada menggunakan kata kunci yang berkaitan dan penerangan yang menarik untuk menentukan elemen tajuk untuk menarik lebih ramai pengguna mengklik dan menyemak imbas.

Vue.js ialah rangka kerja bahagian hadapan yang popular yang menyediakan banyak API untuk penyesuaian komponen. Artikel ini akan memperkenalkan mixin, extend, komponen dan API lain dalam Vue untuk membantu anda menguasai kemahiran penyesuaian komponen. Mixinmixin ialah cara untuk menggunakan semula kod komponen dalam Vue. Ia membolehkan kami menggunakan semula kod yang sudah ditulis ke dalam komponen yang berbeza, dengan itu mengurangkan keperluan untuk menulis kod pendua. Sebagai contoh, kami boleh menggunakan mixin untuk membantu kami menggabungkan berbilang kumpulan

Dengan perkembangan berterusan teknologi pengkomputeran awan, sandaran data telah menjadi sesuatu yang mesti dilakukan oleh setiap perusahaan. Dalam konteks ini, amat penting untuk membangunkan sistem sandaran awan yang sangat tersedia. Rangka kerja PHP Yii ialah rangka kerja berkuasa yang boleh membantu pembangun membina aplikasi web berprestasi tinggi dengan cepat. Berikut akan memperkenalkan cara menggunakan rangka kerja Yii untuk membangunkan sistem sandaran awan yang sangat tersedia. Mereka bentuk model pangkalan data Dalam rangka kerja Yii, model pangkalan data adalah bahagian yang sangat penting. Kerana sistem sandaran data memerlukan banyak jadual dan hubungan

Dalam era maklumat semasa, data besar, kecerdasan buatan, pengkomputeran awan dan teknologi lain telah menjadi tumpuan perusahaan utama. Di antara teknologi ini, teknologi pemaparan kad grafik, sebagai teknologi pemprosesan grafik berprestasi tinggi, telah mendapat perhatian yang lebih. Teknologi pemaparan kad grafik digunakan secara meluas dalam pembangunan permainan, filem dan kesan khas televisyen, pemodelan kejuruteraan dan bidang lain. Bagi pembangun, memilih rangka kerja yang sesuai dengan projek mereka adalah keputusan yang sangat penting. Antara bahasa semasa, PHP ialah bahasa yang sangat dinamik Beberapa rangka kerja PHP yang sangat baik seperti Yii2, Ph

Memandangkan Internet terus berkembang, permintaan untuk pembangunan aplikasi web juga semakin tinggi. Bagi pembangun, membangunkan aplikasi memerlukan rangka kerja yang stabil, cekap dan berkuasa, yang boleh meningkatkan kecekapan pembangunan. Yii ialah rangka kerja PHP berprestasi tinggi terkemuka yang menyediakan ciri yang kaya dan prestasi yang baik. Yii3 ialah versi generasi seterusnya bagi rangka kerja Yii, yang seterusnya mengoptimumkan prestasi dan kualiti kod berdasarkan Yii2. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Yii3 untuk membangunkan aplikasi PHP.
