Getters và Setters có vẻ như là một cách thực sự dài hơi để xử lý các giá trị được gán cho các thuộc tính trong các đối tượng. Rất có thể, bạn đã quen với

Bạn đang xem: getters và setters là gì

getters and setters

Getters và Setters có vẻ như là một cách thực sự dài dòng để xử lý các giá trị được gán cho các thuộc tính trong các đối tượng. Rất có thể, bạn đã quen với việc chỉ định giá trị cho các biến trong mã thủ tục của mình mà không gặp vấn đề gì. Vậy tại sao lại có tất cả những thứ ưa thích trong PHP hướng đối tượng và bắt đầu xử lý những cách phức tạp hơn để gán và truy cập dữ liệu mà các thuộc tính trong các đối tượng của chúng ta nắm giữ? Vấn đề ở đây là gì? Chà, có những lý do chính đáng cho điều này và chúng tôi sẽ cố gắng hiểu chúng trong hướng dẫn này.

Hãy bắt đầu với việc tạo một lớp học bằng cách sử dụng phương pháp săn lùng danh từ của chúng tôi. Làm thế nào về một chiếc xe máy, nghe có vẻ thú vị, phải không? Chắc chắn rồi.

  class Xe máy {
    
}  

Giả sử chúng ta có một chiếc mô tô, chiếc mô tô này sẽ đến từ một nhà sản xuất. Trên thực tế, mỗi chiếc xe máy đều có một nhà sản xuất, vì vậy hãy thiết lập một cách để đảm bảo các đối tượng xe máy của chúng ta đều có nhà sản xuất ngay từ đầu. Chúng ta có thể sử dụng hàm tạo ma thuật tiện dụng của mình để cho phép điều đó.

  class Xe máy {
    công $ make;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
}

$ moto = new Motorcycle ('Harley');

echo $ xe máy- & gt; make;
// Harley
 

Đoạn mã trên đây đại diện cho ngày bạn thuyết phục vợ cho phép bạn mua một chiếc Harley Davidson hoàn toàn mới. Mát mẻ. Bây giờ bạn là người mày mò, bạn nghĩ rằng bạn muốn có thể tùy chỉnh chiếc Harley mới của mình. Có thể bạn có nỗi ám ảnh về lốp xe và bạn muốn có khả năng dễ dàng thay đổi chúng dựa trên điều kiện thời tiết. Nghe có vẻ tuyệt vời, hãy thêm khả năng đó ngay bây giờ.

  class Xe máy {
    công $ make;
    
    công $ lốp xe;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
}

$ moto = new Motorcycle ('Harley');

$ xe máy- & gt; lốp xe = 'Dunlop';

echo $ xe máy- & gt; lốp xe;
// Dunlop
 

Tuyệt vời! Điều đó khá dễ dàng. Điều gì sẽ xảy ra nếu bạn quyết định muốn thay lốp Dunlop của mình cho một bộ lốp Pirelli vì bạn nghe nói rằng chúng tốt hơn vào mùa hè. Dễ dàng cập nhật.

  class Xe máy {
    công $ make;
    
    công $ lốp xe;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
}

$ moto = new Motorcycle ('Harley');

$ xe máy- & gt; lốp xe = 'Pirelli';

echo $ xe máy- & gt; lốp xe;
// Pirelli
 

Bây giờ, bạn có thể đang nghĩ, “Chúng tôi đang chỉ định và truy xuất các giá trị từ thuộc tính của mình, và chúng tôi thậm chí chưa nói về những thứ ngớ ngẩn và thiết lập này. Đưa cái gì?” Đó thực sự là một suy nghĩ hợp lệ. Tuy nhiên, có một lý do chính đáng cho họ và chúng ta sẽ khám phá điều đó ngay bây giờ.

Xem Thêm  [Log] [Lý Thuyết] Tổng quan về Log, Syslog, Rsyslog, Log tập trung - syslog là gì

Tăng cường bảo mật với Getters và Setters

Hãy tưởng tượng bạn tham gia một cuộc đua với chiếc Harley mới của mình. Cạnh tranh rất khốc liệt và các tay đua muốn mọi lợi thế mà họ có thể tìm thấy để giành chiến thắng. Trong số nhiều tay đua có mặt, người chạy chậm nhất vòng loại là chạy lốp Cooper. Mặt khác, bạn là người đủ điều kiện nhanh nhất trên một bộ Dunlops mới. RacerX quyết định rằng anh ta sẽ phá hoại nỗ lực của bạn và hoán đổi những chiếc Cooper của anh ta thành chiếc Harley của bạn, đồng thời lấy trộm Dunlops của bạn và đưa chúng vào chiếc Bultaco của anh ta. Không có gì để bảo vệ bạn khỏi điều đó. Hãy xem.

  class Xe máy {
    công $ make;
    
    công $ lốp xe;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
}

$ moto = new Motorcycle ('Harley');

$ xe máy- & gt; lốp xe = 'Cooper';

echo $ xe máy- & gt; lốp xe;
// Cooper
 

Bùng nổ. Cứ như vậy, bạn đi từ anh hùng đến con số không trên đường đua. Chúng tôi cần một cách để ngăn RacerX giả mạo máy của bạn một lần nữa.

Giới thiệu Getters và Setters

Chúng tôi chỉ có thể làm điều đó bằng cách triển khai một phương pháp đặc biệt có tên là setter và RacerX sẽ thử và lạm dụng setter đó nhưng chúng tôi biết rõ hơn.

 class Xe máy {
    công $ make;
    
    công $ lốp xe;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
    
    public function setTires ($ lốp) {
        if ($ lốp xe == 'Cooper') {
            ném Exception mới ('Ồ, không!');
        } khác {
            $ this- & gt; architects = $ lốp xe;
        }
    }
}

$ moto = new Motorcycle ('Harley');

$ moto- & gt; setTires ('Cooper');

echo $ xe máy- & gt; lốp xe;
// Ngoại lệ: Ồ không!
 

Tại thời điểm này, RacerX sẽ thử và sử dụng phương pháp mới setTires của chúng tôi để lắp một bộ lốp Cooper hoạt động kém hiệu quả vào chiếc Harley sẵn sàng cho cuộc đua của chúng tôi. Tuy nhiên, hãy lưu ý logic mà chúng tôi đã đặt bên trong phương pháp của mình. Trước khi chỉ định thuộc tính lốp xe, chúng tôi sẽ kiểm tra nhanh giá trị của chúng. Chúng tôi thiết lập một quy tắc sao cho nếu lốp xe là Cooper, chúng tôi sẽ đưa ra một ngoại lệ và không cho phép lắp những chiếc lốp đó. Hóa ra, đây là cách duy nhất chúng ta có thể thực hiện loại bảo mật hoặc hành vi này đối với hành vi thiết lập giá trị cho tài sản của chúng ta. Khi chúng tôi làm việc trực tiếp với các thuộc tính, không có cách nào để bắt kịp hành vi này, đó là lý do tại sao getters và setters là một điều tốt.

Vì chúng tôi đã chỉ ra cách sử dụng bộ định vị, chúng ta hãy cũng xem lại cách sử dụng bộ định vị. Điều đó khá dễ dàng, chúng tôi chỉ đơn giản làm như vậy:

  class Xe máy {
    công $ make;
    
    công $ lốp xe;
    
    public function __construct ($ make) {
        $ this- & gt; make = $ make;
    }
    
    public function setTires ($ lốp) {
        nếu ($ lốp xe == 'Cooper') {
            ném Exception mới ('Ồ, không!');
        } khác {
            $ this- & gt; architects = $ lốp xe;
        }
    }
    
    hàm công khai getTires () {
        trả lại $ this- & gt; lốp xe;
    }
}

$ moto = new Motorcycle ('Harley');

$ moto- & gt; setTires ('Firestone');

echo $ xe máy- & gt; getTires ();
// Firestone  

Chúng tôi chưa thêm bất kỳ hành vi nào vào phương thức getter của mình. Có vẻ như sẽ không có lý do gì vì tất cả những gì chúng ta đang làm là trả về một giá trị, nhưng nếu bạn nghĩ về điều đó, có thể bạn muốn áp dụng một số kiểu định dạng cho dữ liệu của mình. Trong trường hợp này, hãy tưởng tượng rằng cơ quan xử phạt muốn kiểm tra lốp của tất cả các tay đua và họ chỉ chấp nhận nhãn hiệu của lốp bằng tất cả các chữ cái viết hoa. Chúng tôi có thể thực hiện điều đó với getter của chúng tôi như vậy.

  hàm công khai getTires () {
        return strtoupper ($ this- & gt; lốp xe);
    }  

Chúng tôi chỉ đơn giản kết thúc báo cáo trả hàng của mình bằng một lệnh gọi đến strtoupper và chúng tôi đang kinh doanh.

Xem Thêm  Mã hóa UTF-8 là gì? Hướng dẫn cho người không phải là lập trình viên - unicode utf 8 là gì

Lưu ý: Quy ước chung là sử dụng vỏ lạc đà cho các phương thức getter và setter. Điều đó có nghĩa là phần get hoặc set của tên phương thức là chữ thường, theo sau là thuộc tính mà chúng ta đang nhận hoặc đặt với chữ cái đầu tiên được viết hoa. Bằng cách sử dụng cách tiếp cận này, người tiêu dùng thuộc tầng lớp của chúng tôi buộc phải tuân theo logic mà chúng tôi đặt ra trong các móc nối của mình. Ngoài cách tiếp cận này, PHP cũng có một cách được xây dựng để đối phó với getters and setters thông qua phương pháp kỳ diệu , các hàm đặc biệt __get () __set () .

Vấn đề với Thuộc tính Công cộng

Một điều chúng tôi chưa đề cập đến, đó là tài sản lốp xe của chúng tôi vẫn được công khai. Chúng tôi đã tạo một số kiểm tra dữ liệu khá mượt mà và tính toàn vẹn trên getters và setters của chúng tôi, nhưng hãy đoán xem, nếu đối thủ cạnh tranh độc hại của chúng tôi muốn tiếp tục lạm dụng đặc tính lốp xe của chúng tôi thông qua cú pháp như $ Motorcycle- & gt; architects = 'Cooper' thay vì $ moto- & gt; setTires ('Cooper') , anh ấy có thể làm điều đó. Lý do anh ta có thể làm được điều đó là tài sản lốp xe của chúng tôi vẫn được công khai. Chúng tôi cần một cách để buộc những người dùng trong lớp của chúng tôi chỉ sử dụng getters và setters của chúng tôi và ngăn họ cố gắng xử lý mọi thứ một cách trực tiếp. Chúng ta có thể làm điều này với gói gọn gàng mà chúng ta sẽ sớm nói đến.

Tóm tắt về người nhận và người lập nghiệp

Getters và Setters đóng một vai trò quan trọng trong lập trình hướng đối tượng. Chúng cho phép chúng ta thực hiện các hành vi và móc nối vào những giá trị nào được phép lưu trữ trong các thuộc tính của các đối tượng của chúng ta. Điều này cung cấp một cách hay để tăng cường bảo mật và ngăn chặn việc giả mạo mã độc của chúng tôi.


Xem thêm những thông tin liên quan đến chủ đề getters và setters là gì

Getters and Setters – Learn Getters and Setters in Java

alt

  • Tác giả: Alex Lee
  • Ngày đăng: 2019-11-21
  • Đánh giá: 4 ⭐ ( 2625 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Full Java Course: https://course.alexlorenlee.com/courses/learn-java-fast
    Get my favorite programming audiobook for free! https://audibletrial.com/alexleefree
    Free tips: https://bit.ly/3vuD81C

    Springboard Software Engineering BootCamp (Use my code ALEXLEE for $1000 USD off): https://bit.ly/3EZp0As
    If you’re new to programming, I recommend solving challenges on Edabit: https://edabit.com/?ref=alexlee
    20% off Brain.fm (awesome): https://www.brain.fm/alexlee20
    20% off Brilliant subscription: https://brilliant.sjv.io/alexlee20
    Java Certificate: https://imp.i384100.net/CourseraJava
    Tabnine autocomplete: https://bit.ly/3ilJLMQ
    Get SERVICE HOURS as an online tutor or FREE ONLINE TUTORING for K-8 students: https://connectmego.org/

    Store: https://qaya.store/alex-lee

    Getters and setters let you set/get private variables in a class with methods.

    Getters and setters in java can be tricky at first… But SURELY you’ll get it 🙂 If you followed along, congrats! You learned by-doing!

    I hope you enjoyed this tutorial on getters and setters in java! I like to have a nice mix of java tutorials and actual projects for you all 🙂

    Was this able to help you learn getters and setters in java? –

    Disclosure: Springboard, Brilliant, Audible, Brain.fm, Edabit and Tabnine links provided are linked to my affiliate accounts & support the channel.

    ~
    https://instagram.com/alexlorenlee

    Alex Lee

Nói về GETTERS và SETTERS trong JAVASCRIPT

  • Tác giả: anonystick.com
  • Đánh giá: 3 ⭐ ( 7871 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Getters và setters tồn tại trong hầu hết các ngôn ngữ lập trình hướng đối tượng, bao gồm cả JavaScript. Chúng là code constructs giúp các developer truy cập vào các thuộc tính của các objects một cách an toàn. Với getters, bạn có thể truy cập (‘get’) các giá trị của các thuộc tính từ mã bên ngoài, trong khi setters cho phép bạn thay đổi (‘set’) giá trị của chúng.

Getter và setter trong JavaScript

  • Tác giả: kungfutech.edu.vn
  • Đánh giá: 3 ⭐ ( 7089 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Getters và Setters là các hàm hoặc phương thức được sử dụng để lấy và đặt các giá trị của các biến. Khái niệm getters và setters rất phổ biến trong lập trình.

[Tự học Javascript] Thuộc tính getters và setters trong Javascript

  • Tác giả: cafedev.vn
  • Đánh giá: 4 ⭐ ( 2573 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Loại đầu tiên là thuộc tính dữ liệu. Chúng ta đã biết làm thế nào để làm việc với họ. Tất cả các thuộc tính mà chúng ta đã sử dụng cho đến bây giờ là thuộc tính dữ liệu.

Hướng dẫn cơ bản về Getters và Setters trong JavaScript / Mã hóa

  • Tác giả: vi.phhsnews.com
  • Đánh giá: 3 ⭐ ( 2175 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Getters và setters là các hàm hoặc phương thức được sử dụng để lấy và đặt các giá trị của các biến. Khái niệm getter-setter là phổ biến trong lập trình máy tính

Java Getter và Setter: Khái niệm cơ bản, Sai lầm phổ biến và các phương pháp hay nhất

  • Tác giả: helpex.vn
  • Đánh giá: 3 ⭐ ( 8847 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Getters và setters là một số phương thức được sử dụng rộng rãi – và bị lạm dụng – trong Java. Getter và setter được sử dụng rộng rãi trong Java. Nó tưởng chừng như đơn giản nhưng không phải…

Java Getter và Setter: Khái niệm cơ bản, Sai lầm phổ biến và các phương pháp hay nhất

  • Tác giả: final-blade.com
  • Đánh giá: 4 ⭐ ( 8884 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  ASP.NET là gì? - asp hoạt động như thế nào

By ads_php