Bagaimana bisa menggunakan variabel pribadi di kelas lain di php?

Saat menyimpan, Anda bisa mendapatkan id entitas yang ingin Anda simpan dengan $user->getId(), dalam hal ini akan mengembalikan ID pengguna karena kami mendapatkan pengguna dari database. Anda kemudian dapat menganggap itu adalah pengguna yang sudah ada yang harus diperbarui

Saya akan berasumsi bahwa Anda sudah familiar dengan konsep dan terminologi Pemrograman Berorientasi Objek (OOP). Jika tidak, baca "Java OOP" atau "C++ OOP"

Memulai dengan Contoh

Mari kita mulai dengan contoh di

  • Mendefinisikan kelas dengan variabel anggota pribadi, konstruktor, destruktor, pengambil/penyetel publik, dan metode publik;
  • Mengalokasikan instance instance kelas;
  • Mengakses variabel/fungsi instance

Contoh. Kelas MyCircle

Kita akan mulai dengan kelas yang disebut

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_5, yang memodelkan lingkaran dengan jari-jari tertentu, seperti yang ditunjukkan pada diagram kelas berikut

Bagaimana bisa menggunakan variabel pribadi di kelas lain di php?
Lingkaran Saya. php

Definisi kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
MyCircleTest. php

Pengemudi penguji untuk kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Anda dapat menjalankan program melalui PHP CLI (Command-Line Interface)

$ php MyCircleTest.php

Keluaran yang diharapkan adalah

Contoh. Kelas MyTime

Kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8 memodelkan instance waktu jam, menit dan detik, seperti yang ditunjukkan pada diagram kelas berikut

Bagaimana bisa menggunakan variabel pribadi di kelas lain di php?
Waktuku. php

Definisi kelas untuk kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
_
MyTimeTest. php

Pengemudi penguji untuk kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

Keluarannya adalah

Bagaimana OOP bekerja di OOP

Mendefinisikan Kelas

Kelas terdiri dari variabel anggota dan fungsi. Untuk mendefinisikan kelas, gunakan kata kunci

$ php MyCircleTest.php
_1, sebagai berikut

class {
   memberVariables;
   memberFunctions;
}
Konstruktor __construct()

Konstruktor adalah fungsi khusus yang disebut

$ php MyCircleTest.php
2. Konstruktor digunakan untuk membuat instance dan menginisialisasi variabel instance. Untuk membuat instance kelas, Anda perlu memanggil konstruktor melalui operator
$ php MyCircleTest.php
3 (seperti yang diilustrasikan dalam test driver). Konstruktor tidak mengembalikan apa pun, oleh karena itu, tidak boleh ada pernyataan
$ php MyCircleTest.php
4 di dalam konstruktor

public function __construct( arguments ) {
   body;
}

PHP TIDAK mendukung kelebihan fungsi (tidak seperti C++ dan Java). Dengan kata lain, hanya ada satu versi konstruktor. Namun, di PHP, Anda bisa memberikan nilai default ke parameter fungsi, termasuk konstruktor. Dengan cara ini, konstruktor dapat dipanggil dengan kumpulan argumen yang berbeda. Misalnya,

PHP tidak menyediakan konstruktor no-arg (no-argument) default (tidak seperti Java). Anda perlu mendefinisikan konstruktor secara eksplisit, jika diperlukan

Penghancur __destruct()

Demikian pula, Anda dapat mendefinisikan destruktor yang disebut

$ php MyCircleTest.php
5 untuk kelas. Destruktor tidak boleh membawa parameter apa pun. Ini akan dijalankan sebelum instance dirusak (atau dibatalkan alokasinya). Destruktor tidak umum digunakan

Dari output contoh di atas, dapat dilihat bahwa destructor dipanggil pada semua objek ketika end-of-file tercapai, sebelum program keluar. Untuk memicu destruktor secara eksplisit, Anda dapat memanggil

$ php MyCircleTest.php
6 pada objek. Misalnya,

Mengalokasikan Mesin Virtual - Operator baru

Untuk mengalokasikan instance kelas, gunakan operator

$ php MyCircleTest.php
3 untuk memanggil konstruktor, dalam bentuk
$ php MyCircleTest.php
8

Mengakses Anggota - Anggota-Operator (->)

Untuk mengakses variabel/fungsi anggota, gunakan operator anggota (

$ php MyCircleTest.php
9), dalam bentuk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
0. Misalnya,

$ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
_1 mengacu pada contoh saat ini. Untuk mereferensikan variabel/fungsi anggota DALAM definisi kelas, Anda HARUS memulai dengan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
1, e. g. ,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
3,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
4. Perhatikan bahwa Anda tidak dapat menghilangkan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
1 (tidak seperti Java)

Pengubah Kontrol Akses - publik, pribadi, dan dilindungi

Kita dapat menggunakan pengubah kontrol akses untuk membatasi akses ke variabel/fungsi anggota. PHP mendukung pengubah kontrol akses ini untuk variabel dan fungsi anggota

  • publik. Dapat diakses oleh semua. Ini defaultnya
  • pribadi. Hanya dapat diakses di dalam kelas
  • terlindung. Dapat diakses oleh subclass
Getter dan Setter

Getter adalah setter yang digunakan untuk mengakses dan mengubah variabel anggota pribadi, seperti yang ditunjukkan pada contoh di atas

Ini adalah praktik umum PHP untuk menggunakan fungsi yang sama untuk getter cum setter, dibedakan oleh argumennya. Misalnya,

__toString()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
6 adalah salah satu yang disebut metode ajaib, yang akan mengembalikan representasi string dari instance saat ini. Ini secara implisit dipanggil ketika objek diperlakukan sebagai string. Misalnya,

Perhatikan bahwa jika

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
6 tidak ditentukan, "
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
8" akan menyebabkan kesalahan runtime

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
_6 mirip dengan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
0 di Jawa. Namun, tidak seperti kelas Java yang selalu mewarisi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
0 dari root superclass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
6 di PHP harus didefinisikan secara eksplisit untuk setiap kelas

__KELAS__

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
_4 adalah salah satu yang disebut konstanta ajaib di PHP, yang menjaga nama kelas dalam string

Komentar DocBlock (atau PhpDoc).

Komentar yang dilampirkan dengan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
5 dikenal sebagai "DocBlock" atau "PhpDoc", yang dapat diekstraksi untuk menghasilkan dokumentasi (seperti JavaDoc). Anda dapat menggunakan markup seperti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
_6 dan
$ php MyCircleTest.php
4 untuk menargetkan deskripsi

Penanganan Pengecualian dan coba-tangkap-akhirnya

Pernyataan dalam blok try dieksekusi secara berurutan. Jika salah satu pernyataan melempar pengecualian, pernyataan lainnya tidak akan dieksekusi. Alih-alih, eksekusi beralih ke blok tangkapan. Jika semua pernyataan di blok try tidak membuang pengecualian apa pun, maka blok try selesai, dan blok catch tidak dijalankan. Perhatikan bahwa eksekusi selalu dilanjutkan setelah blok try-catch, terlepas dari apakah ada pengecualian

Konstruk try-catch mendukung penanganan kesalahan/pengecualian yang baik. Tanpa try-catch, program akan dihentikan secara tiba-tiba saat pengecualian ditemukan. Konstruksi try-catch juga memisahkan logika utama dan logika penanganan pengecualian, untuk rekayasa perangkat lunak yang lebih baik

Lebih OOP

statis

Anggota

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
_8 (variabel atau fungsi) milik kelas, bukan milik instance. Dengan kata lain, semua instance berbagi salinan yang sama dari anggota statis

Misalnya, mari tulis ulang kelas MyCircle kita untuk menyertakan variabel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8
class {
   memberVariables;
   memberFunctions;
}
0 untuk mempertahankan jumlah lingkaran yang dibuat, seperti yang ditunjukkan pada diagram kelas berikut. Perhatikan bahwa anggota statis digarisbawahi dalam notasi UML

Bagaimana bisa menggunakan variabel pribadi di kelas lain di php?
MyCircleWithCount. php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
MyCircleWithCountTest. php
1
2
3
4
5
6
7
8
9
10
11

Keluaran yang diharapkan adalah

Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.

Dapatkah Anda menghitung tanpa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8?

Konstanta - konstanta

Variabel anggota konstan diidentifikasi dengan kata kunci

class {
   memberVariables;
   memberFunctions;
}
2. Konstanta selalu
class {
   memberVariables;
   memberFunctions;
}
3 dan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8, isinya tidak dapat dimodifikasi. Tidak seperti variabel normal, konstanta tidak dimulai dengan tanda $ di depan. Dalam definisi kelas, konstanta dapat dirujuk melalui
class {
   memberVariables;
   memberFunctions;
}
5, sama seperti anggota
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8 lainnya. Di luar definisi kelas, mereka direferensikan melalui
class {
   memberVariables;
   memberFunctions;
}
7. Dengan konvensi, gunakan huruf besar untuk nama konstanta, mis. g. ,
class {
   memberVariables;
   memberFunctions;
}
_8,
class {
   memberVariables;
   memberFunctions;
}
9

Metode Sihir dan Konstanta

Metode ajaib adalah metode khusus, dimulai dengan garis bawah ganda, yang dapat didefinisikan di kelas mana pun dan dijalankan melalui fungsionalitas PHP bawaan. Sebagai contoh,

  • $ php MyCircleTest.php
    2. konstruktor
  • $ php MyCircleTest.php
    5. destruktor
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    _6. mengembalikan representasi string dari objek ini. Dipanggil secara implisit jika string diharapkan
  • public function __construct( arguments ) {
       body;
    }
    _3. untuk kloning salinan
  • public function __construct( arguments ) {
       body;
    }
    4 dan
    public function __construct( arguments ) {
       body;
    }
    5. untuk serialisasi
  • public function __construct( arguments ) {
       body;
    }
    6,
    public function __construct( arguments ) {
       body;
    }
    7,
    public function __construct( arguments ) {
       body;
    }
    8 dan
    public function __construct( arguments ) {
       body;
    }
    9. Dipanggil saat mencoba mengakses variabel anggota yang tidak tersedia.
    public function __construct( arguments ) {
       body;
    }
    _6 dipicu oleh
    $ php MyCircleTest.php
    6;
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    4 dan
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    5. Dipanggil saat mencoba memanggil fungsi (atau fungsi statis) yang tidak tersedia
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    6. melalui
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    _7
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    8

[TODO] Contoh

Konstanta ajaib (

class {
   memberVariables;
   memberFunctions;
}
3 dan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8), dinamai dalam huruf besar dan diawali dan diakhiri dengan garis bawah ganda (tanpa awalan $), berisi properti hanya-baca khusus. Sebagai contoh,

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    _4. nama kelas saat ini dalam string
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    _2. nama file saat ini
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    _3. nomor baris, digunakan bersama dengan
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    2
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    _5. direktori absolut, sama seperti
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    6
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    7 dan
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    8. nama fungsi atau metode
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    _9. namespace saat ini dalam string

[TODO] Contoh

diri sendiri. , orang tua. dan statis

Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
0,
Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
1 dan
Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
2 memungkinkan Anda mengakses
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8 anggota dan
class {
   memberVariables;
   memberFunctions;
}
2 (
class {
   memberVariables;
   memberFunctions;
}
3 dan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8) DALAM definisi kelas.
Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
0 merujuk ke kelas saat ini, seperti yang diilustrasikan dalam contoh di atas.
Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
1 merujuk ke superclass dan
Constructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Destructed a MyCircleWithCount. Number of circles is: 1.
Constructed a MyCircleWithCount. Number of circles is: 2.
Number of circles is: 2
Done.
Destructed a MyCircleWithCount. Number of circles is: 1.
Destructed a MyCircleWithCount. Number of circles is: 0.
2 merujuk ke kelas saat ini tetapi dengan pengikatan terlambat - yang akan dibahas nanti dalam pewarisan

Ingatlah bahwa di luar definisi kelas, Anda dapat mengakses

class {
   memberVariables;
   memberFunctions;
}
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8 anggota dan
class {
   memberVariables;
   memberFunctions;
}
2 melalui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
03

diri vs. $ini

Gunakan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
_1 untuk merujuk ke objek saat ini. Gunakan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_05 untuk merujuk ke kelas saat ini. Dengan kata lain, dalam definisi kelas, gunakan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
06 untuk referensi non-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8 anggota, gunakan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
08 untuk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
8 anggota

Ketik Petunjuk untuk Parameter Fungsi

Dalam definisi fungsi, Anda dapat mendeklarasikan JENIS parameter, seperti

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
10, nama kelas atau antarmuka, atau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
11. Namun, petunjuk tipe TIDAK berlaku untuk tipe skalar, seperti int atau string. Misalnya,

Warisan

Contoh. Kelas MyCircle dan MyCylinder

Mari kita ilustrasikan pewarisan superclass-subclass dengan contoh kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5 dan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13 berikut

Bagaimana bisa menggunakan variabel pribadi di kelas lain di php?
Lingkaran Saya. php

Sama seperti contoh sebelumnya

MyCylinder. php

Kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
13 mewarisi dari kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5, dengan lebih banyak variabel/fungsi anggota

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0
MyCylinderTest. php

Pengemudi penguji untuk kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_13

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_1

Keluaran yang diharapkan adalah

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_2

Cara kerja Warisan

memanjang

Anda dapat menentukan subclass yang mewarisi superclass melalui kata kunci

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
17

diri dan orang tua

Dalam definisi subclass, Anda dapat menggunakan kata kunci

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
18 dalam bentuk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
19 untuk merujuk ke anggota superclass; .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
22 dikenal sebagai operator resolusi ruang lingkup

Mengganti Metode

Subclass dapat mengganti metode yang diwariskan dari superclass dengan memberikan definisinya sendiri. Misalnya, kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_13 dapat menggantikan metode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 yang diwarisi dari superclass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
5 sebagai berikut

terakhir

Variabel/metode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
26 tidak dapat diganti dalam subkelas

Polimorfisme

metode abstrak dan kelas abstrak

Metode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 adalah metode yang hanya memiliki tanda tangan, tanpa implementasi. Kelas yang berisi satu atau lebih
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_27 metode adalah kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_27 tidak dapat dibuat instance-nya, karena definisinya tidak lengkap. Untuk menggunakan kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_27, turunkan subkelas dan ganti metode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27. Subclass sekarang sudah lengkap dan dapat dibuat instance-nya

Misalnya,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_3

Antarmuka

Antarmuka adalah kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_27 murni, yang hanya berisi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
27 metode. Antarmuka didefinisikan menggunakan kata kunci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_35 (bukan
$ php MyCircleTest.php
1). Untuk menurunkan subkelas dari antarmuka, gunakan kata kunci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
37 (bukan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
17)

Sebagai contoh,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_4

Perhatikan bahwa implementasi kelas abstrak dan antarmuka PHP persis sama dengan Java

sifat

Melihat

Lebih OOP

Objek Kloning

PHP menyediakan kata kunci

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_39 untuk menyalin objek, yang melakukan salinan bayangan. Jika
public function __construct( arguments ) {
   body;
}
_3 metode ajaib didefinisikan di kelas, itu akan dijalankan setelah salinan bayangan

__beban otomatis()

[MELAKUKAN]

Ruang nama

Bisakah Anda memiliki dua versi kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_41 dalam program Anda?

Namespace (disebut paket di Java) mengelompokkan kelas, antarmuka, fungsi, dan konstanta terkait. Ini mencoba untuk

  • menyelesaikan konflik penamaan;
  • berikan alias untuk nama panjang

Kata kunci ini digunakan dalam manajemen namespace

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _42
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _43
Mendefinisikan Namespace

Untuk mendefinisikan namespace, tulis "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_44" sebagai pernyataan PERTAMA dalam file PHP Anda, yang menetapkan namespace "saat ini". Misalnya,

Anda dapat menentukan lebih dari satu ruang nama dalam satu file. Tapi jangan lakukan itu untuk praktik terbaik

Ruang Dunia

Entitas apa pun yang didefinisikan tanpa ruang nama adalah milik ruang global

Sub-ruang nama

PHP mendukung apa yang disebut sub-namespace, dengan nama dipisahkan oleh back-slash, mis. g. , "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_45". Perhatikan bahwa tidak ada garis miring ke belakang

Merupakan praktik terbaik untuk menyimpan sumber Anda di direktori yang cocok dengan namespace. Misalnya,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
45 akan disimpan di Path/To/MyProject/ZBox/ModSec

Sekali lagi, perhatikan bahwa PHP menggunakan back-slash di namespace

Mereferensikan Entitas di Namespace

Untuk mereferensikan entitas di namespace, Anda bisa

  1. Gunakan nama yang sepenuhnya memenuhi syarat. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _47. Perhatikan bahwa ini dimulai dengan garis miring ke belakang
  2. Gunakan nama yang tidak memenuhi syarat. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _48. Ini akan diselesaikan ke
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _49
  3. Gunakan nama yang memenuhi syarat sebagian. e. g. ,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    _50 (tanpa garis miring ke belakang). Ini akan diselesaikan ke
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    51. Nama yang memenuhi syarat sebagian berantakan, dan harus dihindari

Untuk mengakses entitas di namespace lain di luar namespace saat ini, gunakan nama yang sepenuhnya memenuhi syarat

Untuk mengakses entitas di ruang global di luar namespace saat ini, awali entitas dengan garis miring terbalik di depan. Misalnya,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
52

[TODO] Contoh

Konstanta Ajaib __NAMESPACE__

Konstanta ajaib

1
2
3
4
5
6
7
8
9
10
11
9 berisi nama namespace saat ini (dalam string). Di ruang global,
1
2
3
4
5
6
7
8
9
10
11
_9 berisi string kosong

Mengimpor dengan "use. "

Anda dapat meminta operator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_55 untuk mengimpor kelas, antarmuka, atau namespace. Setelah entitas diimpor, Anda dapat mengaksesnya menggunakan nama entitasnya, bukan nama yang sepenuhnya memenuhi syarat. (Ini mirip dengan pernyataan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
_56 di Jawa; atau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
57 di C#. ) PHP5. 6 mendukung impor fungsi dan konstanta juga. Misalnya,

Aliasing dengan "gunakan. sebagai. "

Selanjutnya, Anda dapat menentukan alias dalam bentuk "

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
58". Misalnya,

Fungsi/Konstanta jatuh kembali ke Ruang Global

Nama kelas yang tidak memenuhi syarat diselesaikan ke namespace saat ini. Untuk menggunakan kelas di luar namespace saat ini, Anda harus menggunakan nama yang sepenuhnya memenuhi syarat

Nama fungsi yang tidak memenuhi syarat dan konstanta juga diselesaikan ke namespace saat ini. Namun, jika tidak dapat diselesaikan, fungsi/konstanta akan kembali ke ruang global

Bagaimana cara mengakses variabel pribadi di kelas lain di php?

Anda perlu mengatur akses ke dilindungi. Pribadi berarti hanya dapat diakses dari dalam kelasnya sendiri dan tidak dapat diwariskan. Dilindungi memungkinkannya untuk diwariskan tetapi masih tidak dapat diakses langsung dari luar kelas. Simpan jawaban ini

Bagaimana Anda menggunakan variabel pribadi di kelas dari kelas lain?

Kita dapat mengakses variabel pribadi di kelas yang berbeda dengan memasukkan variabel tersebut ke dalam metode Publik dan memanggil metode tersebut dari kelas lain dengan membuat objek dari kelas tersebut. Example: using System; using System.

Bisakah variabel pribadi diakses dari kelas lain?

Tetapi, jika Anda mewarisi kelas yang memiliki bidang privat, termasuk semua anggota kelas lainnya, variabel privat juga diwariskan dan tersedia untuk subkelas. Namun, Anda tidak dapat mengaksesnya secara langsung , jika Anda melakukannya, kesalahan waktu kompilasi akan dihasilkan.

Bisakah kita memanggil metode pribadi dari luar kelas php?

Properti dan metode pribadi hanya dapat digunakan oleh kelas di mana properti atau metode didefinisikan. Kelas turunan dan kode luar tidak dapat menggunakannya .