Khóa biến đối tượng PHP

Cho đến bây giờ, chúng tôi đã làm việc với các giá trị đơn giản như {{ dump(pageData) }}1 hoặc {{ dump(pageData) }}2, đây là một mảng chứa các giá trị đơn giản mà chúng tôi lặp lại và in ra từng giá trị. Bây giờ, hãy làm cho mọi thứ thú vị hơn một chút

Tôi sẽ chuyển vào một biến mới có tên là {{ dump(pageData) }}3

// index.php // ... echo $twig->render('homepage.twig', array( 'pageData' => array( 'title' => 'Suit Up!', 'summary' => "You're hip, you're cool, you're a penguin! Now, start dressing like one! Find the latest suits, bow-ties, swim shorts and other outfits here!", 'hasSale' => true, ), // ... ));

Nếu bạn chưa thấy mã PHP mà tôi vừa sử dụng để tạo biến này, bạn có thể sử dụng hàm kết xuất tiện dụng để thấy rằng đó là một mảng có khóa {{ dump(pageData) }}4, {{ dump(pageData) }}5 và {{ dump(pageData) }}6

{{ dump(pageData) }}

Vậy làm thế nào chúng ta có thể lấy dữ liệu trên các khóa của mảng?

Câu trả lời là với thời kỳ toàn năng (______07). Để in {{ dump(pageData) }}4, chỉ cần nói {{ dump(pageData) }}9. Để in bản tóm tắt, hãy sử dụng thủ thuật tương tự

{{ dump(pageData) }}1

Điều này có thể được sử dụng ở bất cứ đâu, như trong câu lệnh {{ dump(pageData) }}10 theo cùng một cách

{{ dump(pageData) }}3

Vì vậy, nếu bạn cần dữ liệu từ một mảng, toán tử {{ dump(pageData) }}7 là câu trả lời của bạn

Biến {{ dump(pageData) }}2 cũng là một mảng, nhưng vì nó là một tập hợp các phần tử nên chúng ta lặp qua nó bằng thẻ for thay thế. Nhưng nếu chúng tôi cần lấy mục đầu tiên theo cách thủ công hoặc khóa "không" từ mảng, chúng tôi có thể làm điều đó. Nếu bạn đang nghĩ rằng bạn sẽ nói {{ dump(pageData) }}13, thì bạn đã đúng

{{ dump(pageData) }}7

Đôi khi bạn có thể thấy một cú pháp khác để lấy các mục từ một mảng

{{ dump(pageData) }}8

Đừng để điều này làm bạn bối rối - hầu như bạn luôn muốn sử dụng dấu chấm. Cú pháp dấu ngoặc vuông chỉ cần thiết trong một số trường hợp không phổ biến khi bạn cần sử dụng một biến làm khóa

{{ dump(pageData) }}9

Mẹo

{{ dump(pageData) }}14 được sử dụng nếu bạn muốn buộc loại bỏ thuộc tính của một đối tượng như một mảng, thay vì cố gắng truy cập thuộc tính. Đó là trường hợp rất hiếm, vì vậy đừng lo lắng về nó

Tôi sẽ làm phức tạp thêm một lần nữa bằng cách thay đổi giao diện của biến {{ dump(pageData) }}2. Nhưng trước tiên, hãy sử dụng chức năng kết xuất của người bạn của chúng ta để thấy rằng hiện tại {{ dump(pageData) }}2 chỉ là một tập hợp các chuỗi

{{ dump(pageData) }}3

Bây giờ, tôi sẽ thay đổi biến {{ dump(pageData) }}2

{{ dump(pageData) }}5

Sau khi tôi thay đổi, hãy làm mới trang để thấy rằng {{ dump(pageData) }}2 hiện là một tập hợp của các đối tượng {{ dump(pageData) }}19. Mỗi đối tượng {{ dump(pageData) }}19 có thuộc tính {{ dump(pageData) }}31 và {{ dump(pageData) }}32

Nếu chúng tôi không thay đổi bất cứ điều gì bên trong Twig, chúng tôi sẽ gặp lỗi

Lỗi nghiêm trọng có thể bắt được. Đối tượng của lớp Sản phẩm không thể được chuyển đổi thành chuỗi trong twig/vendor/twig/twig/lib/Twig/Environment. php(320). mã eval()'d trên dòng 30

Điều này có nghĩa là chúng ta có thể in một chuỗi, nhưng không thể in một đối tượng. Điều đó có ý nghĩa. Mỗi đối tượng Sản phẩm có các thuộc tính {{ dump(pageData) }}31 và {{ dump(pageData) }}32 và chúng tôi thực sự muốn in các thuộc tính đó riêng lẻ

Mẹo

Nếu một đối tượng có phương thức {{ dump(pageData) }}35, thì nó thực sự có thể được in

Và đoán xem?. Chúng ta có thể sử dụng ký tự dấu chấm một lần nữa để làm điều này. Mặc dù {{ dump(pageData) }}3 là một mảng và mỗi {{ dump(pageData) }}37 là một đối tượng, nhưng việc lấy dữ liệu từ mỗi cái hoàn toàn giống nhau

// index.php // ... echo $twig->render('homepage.twig', array( 'pageData' => array( 'title' => 'Suit Up!', 'summary' => "You're hip, you're cool, you're a penguin! Now, start dressing like one! Find the latest suits, bow-ties, swim shorts and other outfits here!", 'hasSale' => true, ), // ... ));6

Làm mới trang để thấy rằng các sản phẩm của chúng tôi có thêm chi tiết

Mẹo

Trong dự án của bạn, bạn có thể sẽ có một hàm hoặc biến Twig mà bạn sử dụng khi đề cập đến các tệp hình ảnh tĩnh, CSS hoặc JS. Kiểm tra tài liệu của bạn để xem

Ổn thỏa. Bằng cách sử dụng hàm {{ dump(pageData) }}38, chúng ta có thể thấy một biến trông như thế nào. Chúng tôi có thể in nó, lặp qua nó hoặc in khóa con hoặc thuộc tính cho nó. Chúng ta nguy hiểm như một con cá voi sát thủ

Đối với dân gian kỹ thuật hơn, đằng sau hậu trường, Twig kiểm tra xem liệu lớp Sản phẩm có thuộc tính công khai {{ dump(pageData) }}31 hay không. Nếu thuộc tính không tồn tại hoặc không công khai, nó sẽ tìm một phương thức {{ dump(pageData) }}70 và gọi nó để lấy giá trị. Điều này cho phép chúng ta nói {{ dump(pageData) }}71 mà không thực sự quan tâm mã PHP của lớp trông như thế nào

Làm cách nào để lấy khóa đối tượng trong PHP?

Để chỉ hiển thị các khóa từ một đối tượng, hãy sử dụng array_keys() trong PHP.

Làm cách nào để lấy khóa đối tượng từ biến?

Một giá trị đối tượng có thể được truy cập bằng Ký hiệu Dấu chấm và Ký hiệu Dấu ngoặc. Để lấy giá trị đối tượng thông qua một khóa biến, giá trị hoặc biểu thức bên trong ký hiệu dấu ngoặc phải khớp với tên khóa hiện có, sau đó nó trả về một giá trị . Ký hiệu dấu ngoặc, không giống như ký hiệu dấu chấm có thể được sử dụng với các biến.

Biến $_ trong PHP là gì?

Một biến bắt đầu bằng ký hiệu $, theo sau là tên của biến . Tên biến phải bắt đầu bằng một chữ cái hoặc ký tự gạch dưới. Tên biến không được bắt đầu bằng số. Tên biến chỉ có thể chứa các ký tự chữ và số và dấu gạch dưới (A-z, 0-9 và _ )

Làm cách nào để xác định biến đối tượng trong PHP?

Xác định đối tượng . Mỗi đối tượng có tất cả các thuộc tính và phương thức được định nghĩa trong lớp, nhưng chúng sẽ có các giá trị thuộc tính khác nhau. Các đối tượng của lớp được tạo bằng từ khóa new .

Chủ đề