Đối tượng đúc php
Giống như tất cả các ngôn ngữ lập trình khác, PHP cũng có những thành phần như Biến, Mãng, hay Đối tượng. Ở bài viết này sẽ đề cập đến việc sử dụng biến, mảng và đối tượng hay cách khai báo chúng VariationBiến hay biến dùng để chứa 1 giá trị hoặc một chuỗi văn bản, hoặc một hàm mà nó có thể được thay đổi bằng mã nguồn của bạn. Nó có các kiểu giá trị cụ thể như Null, Float, Int, String. . . Khai báoNhư bài 1 Hello PHP mình cũng có ví dụ sử dụng biến như thế nào đó là chỉ việc khai báo chúng trong cặp thẻ là được. $tenbien = "Gia tri text"; Tên biến có các quy định cụ thể để viết như không sử dụng các ký tự đặc biệt, không có giới hạn. . . tìm hiểu thêm ở đây UseĐơn giản là mình sẽ sử dụng nó để hiển thị màn hình hoặc xử lý trong biểu thức gió điều kiện hoặc vòng lặp ( nếu biến của bạn là một mảng ) $tenbien = "Gia tri Test"; MảngMảng hay còn gọi là mảng thì được khai báo với từ khóa mảng hoặc sau này PHP còn được khai báo với dấu [] nó là một tập hợp các giá trị , và có mảng 1 chiều và mảng nhiều chiều. Các phần tử trong mảng được đánh dấu từ 0 Khai báoCó 2 cách khai báo mảng đó là
Đọc thêm tài liệu về mảng ở đây để biết thêm cách thêm phần tử, xóa phần tử vào mảng UseĐể quét mảng có thể có nhiều cách khác nhau, cụ thể ở dưới đây mình sử dụng tên mảng và số thứ tự của nó thì sẽ được đánh giá tương ứng hoặc sử dụng vòng lặp để duyệt lần lượt phần tử của mảng
Mục tiêuĐối tượng hay còn được gọi là đối tượng, trong PHP nó là một tập hợp các thuộc tính cụ thể mà đối tượng cụ thể có thể sử dụng. Ví dụ. mình có một đối tượng là xe hơi nó có các thuộc tính về màu sắc, bao nhiêu bánh, có kính hay không, của hãng nào. . . Khai báoThông thường, một đối tượng sẽ phải thuộc một lớp cụ thể nào đó tuy nhiên ở bài này mình sẽ đề cập đến 1 lớp trống trong PHP đó là stdClass, hãy tìm hiểu sâu hơn ở đây để biết cách khai báo và cách sử dụng của đối tượng
UseSử dụng đối tượng này thì chỉ cần gọi thuộc tính của nó dưới mũi tên giống như cách thêm giá trị của nó
Tổng kếtBài viết trên đây nói về biến, mảng và đối tượng trong PHP, có nói sơ lược về mọi cách khai báo và cách sử dụng, khái niệm mà mình định nghĩa nó trong đầu, bài viết này lướt qua để người có thể nắm bắt Những kiến thức trên đây chỉ để mô tả cho người mới biết và hình dung qua để có thể đi sâu hơn, tuyệt đối chưa đủ để các bạn sử dụng để giải quyết một dự án cụ thể nào Đưa ra một đối tượng lớp PHP và nhiệm vụ là chuyển đổi hoặc ép kiểu đối tượng này thành đối tượng của lớp khác Cách tiếp cận 1. Các đối tượng là thể hiện của một lớp tiêu chuẩn được xác định trước có thể được chuyển đổi thành đối tượng của một lớp tiêu chuẩn khác Thí dụ
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )3
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )5_______208_______ Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )2
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )4 $a Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )05
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )07_______208_______ Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )14 đầu ra. int(1) float(1) float(1) float(1) int(1) int(1) bool(true) bool(true) string(1) "1" array(1) { [0]=> string(1) "1" } object(stdClass)#1 (1) { [0]=> string(1) "1" } NULL Cách tiếp cận 2. Tạo một hàm tạo cho lớp cuối cùng và thêm một vòng lặp foreach để gán tất cả các thuộc tính của lớp ban đầu cho thể hiện của lớp cuối cùng Thí dụ Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )16 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )17
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )19 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )20 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )21 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )22 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )24 $a Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )27 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )22 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______31 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )32 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______34 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )35 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )27 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______39 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )39
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )42 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )20 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______47 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )49 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )31 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )51_______6_______52 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )53
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______56 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______58 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )35_______6_______52 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )61 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )62 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )63 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )64 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )53 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )66 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )67 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )68 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )62 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )64 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______39 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______39 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )39
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )79 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26_______6_______82 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )83
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )85 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )86_______6_______80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )90 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )91 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26_______6_______82 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )95 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )99 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )86_______6_______80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )14 đầu ra. Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks ) Cách tiếp cận 3. Viết hàm chuyển đổi đối tượng của lớp ban đầu thành dữ liệu được tuần tự hóa bằng phương thức serialize(). Unserialize dữ liệu được tuần tự hóa này thành thể hiện của lớp cuối cùng bằng cách sử dụng phương thức unserialize() Thí dụ Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )06 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )17
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )19 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )20 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )21 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )22 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )24 $a Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )27 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )7 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )22 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______31 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )32 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______34 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )35 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )27 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______39 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )39
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )42 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )20 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )22 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______37 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )39
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )40 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )31 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )42 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )52 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )45 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )53 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23_______6_______48 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )49 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______51 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______54 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )35 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )45 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )57 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______45 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )33_______6_______62 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )35 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )62 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )65 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )52 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )57 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )68 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )57 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )70 = 1; 9Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )23____6_______73 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )39
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )90 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )26_______6_______82 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )83
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )85 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )86_______6_______80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )87 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )88 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )90_______6_______80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )44 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )93 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )99 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )86_______6_______80 Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )1
Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks )14 đầu ra. Geeks1 Object ( [a] => geeksforgeeks ) Geeks2 Object ( [a] => geeksforgeeks ) Ghi chú. Nói chung, PHP không cho phép truyền kiểu của các lớp do người dùng xác định, trong khi việc chuyển đổi/truyền có thể đạt được một cách gián tiếp bằng các phương pháp được trình bày ở trên |