Thứ Năm, 28 tháng 3, 2019

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh và tránh các lỗi phổ biến.

Điểm tương đồng


Các ngôn ngữ kịch bản được biên dịch - Cả Perl và PHP đều là ngôn ngữ kịch bản. Điều này có nghĩa là chúng không được sử dụng để tạo các tệp thực thi độc lập trước khi thực hiện.

Cú pháp - Cú pháp cơ bản của PHP rất gần với Perl và cả hai đều có chung nhiều tính năng cú pháp với C. 

Học lập trình PHP chuyên nghiệp
Học lập trình PHP chuyên nghiệp

Code không nhạy cảm với khoảng trắng, các câu lệnh được chấm dứt bởi dấu chấm phẩy và dấu ngoặc nhọn tổ chức nhiều câu lệnh thành một khối.

Các lệnh gọi hàm bắt đầu bằng tên của hàm, theo sau là các đối số thực tế được đặt trong dấu ngoặc đơn và được phân tách bằng dấu phẩy.

>> Các biến ký hiệu đô la - Tất cả các biến trong lập trình PHP trông giống như các biến vô hướng trong Perl: một tên có ký hiệu đô la ($) ở phía trước nó <<
Không khai báo các biến - Như trong Perl, bạn không cần phải khai báo loại biến PHP trước khi sử dụng nó.

Nhập lỏng các biến - Như trong Perl, các biến trong PHP không có loại nội tại ngoài giá trị mà chúng hiện đang giữ. Bạn có thể lưu trữ số hoặc chuỗi trong cùng một loại biến.

Chuỗi và nội suy biến - Cả PHP và Perl thực hiện nhiều giải thích hơn về chuỗi được trích dẫn kép ("chuỗi") so với chuỗi đơn được trích dẫn ('chuỗi').

Sự khác biệt


PHP được nhúng HTML - Mặc dù có thể sử dụng PHP cho các tác vụ tùy ý bằng cách chạy nó từ dòng lệnh, nhưng nó thường được kết nối với máy chủ Web và được sử dụng để sản xuất các trang Web.

Nếu bạn đã quen viết các tập lệnh CGI bằng Perl, thì điểm khác biệt chính trong PHP là bạn không còn cần phải in rõ ràng các khối HTML tĩnh lớn bằng cách sử dụng các câu lệnh in hoặc heredoc và thay vào đó chỉ có thể tự viết HTML bên ngoài khối mã PHP.

Không có biến @ hoặc% - PHP chỉ có một loại biến duy nhất, bắt đầu bằng ký hiệu đô la ($). Bất kỳ kiểu dữ liệu nào trong ngôn ngữ đều có thể được lưu trữ trong các biến đó, cho dù là vô hướng hay hợp chất.

Mảng so với băm - PHP có một kiểu dữ liệu duy nhất được gọi là một mảng đóng vai trò của cả băm và mảng / danh sách trong Perl.

Chỉ định các đối số cho các hàm - Các lệnh gọi hàm trong PHP trông khá giống các lệnh gọi chương trình con trong Perl.

Mặt khác, các định nghĩa hàm trong PHP thường yêu cầu một số loại danh sách các đối số chính thức như trong C hoặc Java không phải là csse trong PERL.

Phạm vi biến trong các hàm - Trong Perl, phạm vi mặc định cho các biến là toàn cục. Điều này có nghĩa là các biến cấp cao nhất có thể nhìn thấy bên trong các chương trình con.

Thông thường, điều này dẫn đến việc sử dụng bừa bãi trên toàn cầu qua các chức năng. Trong PHP, phạm vi của các biến trong định nghĩa hàm là mặc định cục bộ.

Không có hệ thống mô-đun nào như vậy - Trong PHP không có sự phân biệt thực sự giữa các tệp mã thông thường và các tệp mã được sử dụng làm thư viện nhập khẩu.

Phá vỡ và tiếp tục thay vì tiếp theo và cuối cùng - PHP giống như ngôn ngữ C và sử dụng break và tiếp tục thay vì câu lệnh tiếp theo và cuối cùng.

Không elsif - Một sự khác biệt chính tả nhỏ: elsif của Perl là khác của PHP.

Nhiều loại nhận xét khác - Ngoài các nhận xét một dòng theo kiểu Perl (#), PHP cung cấp các nhận xét đa dòng kiểu C (/ * bình luận * /) và các nhận xét một dòng theo kiểu Java (// bình luận).

Biểu thức chính quy - PHP không có cú pháp dựng sẵn dành riêng cho biểu thức chính quy, nhưng có hầu hết các chức năng tương tự trong các hàm biểu thức chính quy "Tương thích Perl".

Thứ Ba, 19 tháng 3, 2019

Học lập trình PHP - PHP cho nhà phát triển C

Cách đơn giản nhất để nghĩ về PHP là C được giải thích mà bạn có thể nhúng vào các tài liệu HTML. Bản thân ngôn ngữ này rất giống với C, ngoại trừ các biến chưa được kiểm tra, toàn bộ thư viện dành riêng cho Web được tích hợp và mọi thứ được nối trực tiếp với máy chủ Web yêu thích của bạn.

Học lập trình PHP chuyên nghiệp
Học lập trình PHP chuyên nghiệp

Cú pháp của các câu lệnh và định nghĩa hàm nên quen thuộc, ngoại trừ các biến luôn được bắt đầu bằng $ và các hàm không yêu cầu các nguyên mẫu riêng biệt.

Ở đây chúng tôi sẽ đưa ra một số điểm tương đồng và khác biệt trong PHP và C

Điểm tương đồng


Cú pháp - Nói rộng ra, cú pháp PHP giống như trong C: Code không có độ nhạy, các câu lệnh được chấm dứt bằng dấu chấm phẩy, các lệnh gọi hàm có cùng cấu trúc (my_feft (biểu thức1, biểu thức 2)) và dấu ngoặc nhọn ({và}) tạo các câu lệnh thành khối. PHP hỗ trợ C và C ++ - nhận xét kiểu (/ * * / cũng như //), và cả kiểu Perl và shell-script (#).

Toán tử - Toán tử gán (=, + =, * =, v.v.), toán tử Boolean (&&, || ,!), Toán tử so sánh (<,>, <=,> =, == ,! = ) và các toán tử số học cơ bản (+, -, *, /,%) đều hoạt động trong PHP giống như trong C.

Cấu trúc điều khiển - Các cấu trúc điều khiển cơ bản (nếu, chuyển đổi, trong khi, cho) hoạt động như trong C, bao gồm hỗ trợ ngắt và tiếp tục. Một sự khác biệt đáng chú ý là chuyển đổi trong PHP có thể chấp nhận các chuỗi làm định danh trường hợp.

Tên hàm - Khi bạn xem qua tài liệu, bạn sẽ thấy nhiều tên hàm có vẻ giống với hàm C.

Sự khác biệt


Dấu hiệu đồng đô la - Tất cả các biến được ký hiệu bằng $ hàng đầu. Các biến không cần phải khai báo trước khi gán và chúng không có kiểu nội tại.

 >> Các loại - Học lập trình PHP chỉ có hai loại số: số nguyên (tương ứng với một số dài trong C) và gấp đôi (tương ứng với một số trong C). Các chuỗi có độ dài tùy ý. Không có loại nhân vật riêng biệt <<

Chuyển đổi loại - Các loại không được kiểm tra tại thời điểm biên dịch và lỗi loại thường không xảy ra trong thời gian chạy. Thay vào đó, các biến và giá trị được tự động chuyển đổi qua các loại khi cần thiết.

Mảng - Mảng có một cú pháp bề ngoài tương tự như cú pháp mảng của C, nhưng chúng được thực hiện hoàn toàn khác nhau. Chúng thực sự là các mảng kết hợp hoặc băm và chỉ mục có thể là một số hoặc một chuỗi. Họ không cần phải khai báo hoặc phân bổ trước.

Không có kiểu cấu trúc - Không có cấu trúc trong PHP, một phần vì các kiểu mảng và đối tượng làm cho nó không cần thiết. Các phần tử của một mảng PHP không cần phải là một kiểu nhất quán.

Không có con trỏ - Không có con trỏ có sẵn trong PHP, mặc dù các biến tapless đóng vai trò tương tự. PHP không hỗ trợ các tham chiếu biến.

Bạn cũng có thể mô phỏng các con trỏ hàm ở một mức độ nào đó, trong đó các tên hàm có thể được lưu trữ trong các biến và được gọi bằng cách sử dụng biến chứ không phải là tên bằng chữ.

Không có nguyên mẫu - Các hàm không cần phải khai báo trước khi triển khai chúng được xác định, miễn là định nghĩa có thể được tìm thấy ở đâu đó trong tệp mã hiện tại hoặc các tệp được bao gồm.

Quản lý bộ nhớ - Công cụ PHP thực sự là một môi trường được thu gom rác (được tính tham chiếu) và trong các tập lệnh nhỏ, không cần thực hiện bất kỳ sự phân bổ nào. Bạn nên tự do phân bổ các cấu trúc mới - chẳng hạn như các chuỗi và đối tượng mới.

Trong PHP5, có thể định nghĩa hàm hủy cho các đối tượng, nhưng không có miễn phí hoặc xóa. Destructor được gọi khi tham chiếu cuối cùng đến một đối tượng biến mất, trước khi bộ nhớ được lấy lại.

Biên dịch và liên kết - Không có bước biên dịch riêng cho các tập lệnh PHP.

Sự cho phép - Như một vấn đề chung, PHP dễ tha thứ hơn C (đặc biệt là trong hệ thống loại của nó) và do đó sẽ cho phép bạn thoát khỏi các loại sai lầm mới. Kết quả bất ngờ là phổ biến hơn so với lỗi.

Thứ Bảy, 16 tháng 3, 2019

Học lập trình PHP - Lập trình hướng đối tượng trong PHP

Chúng ta có thể tưởng tượng vũ trụ của chúng ta được tạo thành từ các vật thể khác nhau như mặt trời, trái đất, mặt trăng, v.v. thực hiện một phần mềm sử dụng các đối tượng khác nhau.

Khái niệm hướng đối tượng


Trước khi chúng tôi đi vào chi tiết, hãy xác định các thuật ngữ quan trọng liên quan đến Lập trình hướng đối tượng.

Lớp - Đây là kiểu dữ liệu do lập trình viên xác định, bao gồm các hàm cục bộ cũng như dữ liệu cục bộ. Bạn có thể nghĩ về một lớp như một khuôn mẫu để tạo ra nhiều trường hợp cùng loại (hoặc lớp) của đối tượng.

Học lập trình PHP chuyên nghiệp
Học lập trình PHP chuyên nghiệp

Đối tượng - Một thể hiện riêng lẻ của cấu trúc dữ liệu được xác định bởi một lớp. Bạn định nghĩa một lớp một lần và sau đó tạo nhiều đối tượng thuộc về nó. Các đối tượng cũng được gọi là ví dụ.

Biến thành viên - Đây là các biến được định nghĩa trong một lớp. Dữ liệu này sẽ vô hình bên ngoài lớp và có thể được truy cập thông qua các hàm thành viên. Các biến này được gọi là thuộc tính của đối tượng một khi đối tượng được tạo.

 >> Hàm thành viên - Đây là các hàm được định nghĩa bên trong một lớp và được sử dụng để truy cập dữ liệu đối tượng Học lập trình PHP <<
Kế thừa - Khi một lớp được định nghĩa bằng cách kế thừa chức năng hiện có của lớp cha thì nó được gọi là thừa kế. Ở đây lớp con sẽ kế thừa tất cả hoặc một vài hàm thành viên và các biến của lớp cha.

Lớp cha mẹ - Một lớp được kế thừa từ một lớp khác. Đây cũng được gọi là một lớp cơ sở hoặc siêu lớp.

Lớp con - Một lớp kế thừa từ lớp khác. Điều này cũng được gọi là một lớp con hoặc lớp dẫn xuất.

Đa hình - Đây là một khái niệm hướng đối tượng trong đó cùng một chức năng có thể được sử dụng cho các mục đích khác nhau. Ví dụ tên hàm sẽ vẫn giống nhau nhưng nó có số lượng đối số khác nhau và có thể thực hiện các nhiệm vụ khác nhau.

Quá tải - một loại đa hình trong đó một số hoặc tất cả các toán tử có các triển khai khác nhau tùy thuộc vào các loại đối số của chúng. Các chức năng tương tự cũng có thể bị quá tải với việc thực hiện khác nhau.

Trừu tượng dữ liệu - Bất kỳ biểu diễn dữ liệu nào trong đó các chi tiết triển khai đều bị ẩn (trừu tượng hóa).

Đóng gói - đề cập đến một khái niệm trong đó chúng ta gói gọn tất cả các dữ liệu và các hàm thành viên lại với nhau để tạo thành một đối tượng.

Trình xây dựng - dùng để chỉ một loại hàm đặc biệt sẽ được gọi tự động bất cứ khi nào có sự hình thành đối tượng từ một lớp.

Destructor - dùng để chỉ một loại chức năng đặc biệt sẽ được gọi tự động mỗi khi một đối tượng bị xóa hoặc đi ra khỏi phạm vi.

Xác định các lớp PHP


Biểu mẫu chung để định nghĩa một lớp mới trong PHP như sau
<?php
   class phpClass {
      var $var1;
      var $var2 = "constant string";
      
      function myfunc ($arg1, $arg2) {
         [..]
      }
      [..]
   }
?>

Dưới đây là mô tả của từng dòng

Các hình thức đặc biệt lớp , theo sau là tên của lớp mà bạn muốn xác định.

Một tập hợp các dấu ngoặc bao quanh bất kỳ số lượng khai báo biến và định nghĩa hàm.

Khai báo biến bắt đầu bằng var dạng đặc biệt , theo sau là tên biến $ thông thường; họ cũng có thể có một sự gán ban đầu cho một giá trị không đổi.

Các định nghĩa hàm trông giống như các hàm PHP độc lập nhưng là cục bộ của lớp và sẽ được sử dụng để thiết lập và truy cập dữ liệu đối tượng.

Dưới đây là một ví dụ xác định một loại loại Sách
<?php
   class Books {
      /* Member variables */
      var $price;
      var $title;
      
      /* Member functions */
      function setPrice($par){
         $this->price = $par;
      }
      
      function getPrice(){
         echo $this->price ."<br/>";
      }
      
      function setTitle($par){
         $this->title = $par;
      }
      
      function getTitle(){
         echo $this->title ." <br/>";
      }
   }
?>
Biến $ này là một biến đặc biệt và nó đề cập đến cùng một đối tượng tức là. chinh no.

Tạo các đối tượng trong PHP


Khi bạn đã xác định lớp của mình, thì bạn có thể tạo bao nhiêu đối tượng tùy thích của loại lớp đó. Sau đây là một ví dụ về cách tạo đối tượng bằng toán tử mới .

$physics = new Books;
$maths = new Books;
$chemistry = new Books;

Ở đây chúng tôi đã tạo ra ba đối tượng và các đối tượng này độc lập với nhau và chúng sẽ có sự tồn tại riêng biệt. Tiếp theo chúng ta sẽ xem làm thế nào để truy cập chức năng thành viên và xử lý các biến thành viên.

Chức năng gọi thành viên


Sau khi tạo các đối tượng của bạn, bạn sẽ có thể gọi các hàm thành viên liên quan đến đối tượng đó. Một hàm thành viên sẽ chỉ có thể xử lý biến thành viên của đối tượng liên quan.

Ví dụ sau đây cho thấy cách đặt tiêu đề và giá cho ba cuốn sách bằng cách gọi các chức năng thành viên.

Physics for High School
Advanced Chemistry
Algebra
10
15
7

Hàm xây dựng

Hàm xây dựng là loại hàm đặc biệt được gọi tự động mỗi khi đối tượng được tạo. Vì vậy, chúng tôi tận dụng tối đa hành vi này, bằng cách khởi tạo nhiều thứ thông qua các hàm xây dựng.

PHP cung cấp một hàm đặc biệt gọi là __construct () để định nghĩa hàm tạo. Bạn có thể chuyển bao nhiêu đối số bạn muốn vào hàm constructor.

Ví dụ sau sẽ tạo một hàm tạo cho lớp Sách và nó sẽ khởi tạo giá và tiêu đề cho sách tại thời điểm tạo đối tượng.

function __construct( $par1, $par2 ) {
   $this->title = $par1;
   $this->price = $par2;
}

Bây giờ chúng ta không cần gọi hàm set riêng để đặt giá và tiêu đề. Chúng ta chỉ có thể khởi tạo hai biến thành viên này tại thời điểm tạo đối tượng. Kiểm tra ví dụ sau đây

  Physics for High School
  Advanced Chemistry
  Algebra
  10
  15
  7

Phá hủy

Giống như hàm xây dựng, bạn có thể định nghĩa hàm hủy bằng hàm __desturation () . Bạn có thể giải phóng tất cả các tài nguyên có trong một hàm hủy.

Di sản

Các định nghĩa lớp PHP có thể tùy ý kế thừa từ một định nghĩa lớp cha bằng cách sử dụng mệnh đề mở rộng. Cú pháp như sau

class Child extends Parent {
   <definition body>
}

Tác dụng của thừa kế là lớp con (hoặc lớp con hoặc lớp dẫn xuất) có các đặc điểm sau

Tự động có tất cả các khai báo biến thành viên của lớp cha.

Tự động có tất cả các chức năng thành viên giống như cha mẹ, mà (theo mặc định) sẽ hoạt động giống như các chức năng đó làm trong cha mẹ.

Ví dụ sau kế thừa lớp Sách và thêm nhiều chức năng dựa trên yêu cầu.
class Novel extends Books {
   var $publisher;
   
   function setPublisher($par){
      $this->publisher = $par;
   }
   
   function getPublisher(){
      echo $this->publisher. "<br />";
   }
}
Bây giờ ngoài các hàm được kế thừa, lớp Novel giữ hai hàm thành viên bổ sung.

Chức năng ghi đè


Các định nghĩa hàm trong các lớp con ghi đè các định nghĩa có cùng tên trong các lớp cha. Trong một lớp con, chúng ta có thể sửa đổi định nghĩa của hàm được kế thừa từ lớp cha.

Trong ví dụ sau, các hàm getprice và getTitle được ghi đè để trả về một số giá trị.
function getPrice() {
   echo $this->price . "<br/>";
   return $this->price;
}
   
function getTitle(){
   echo $this->title . "<br/>";
   return $this->title;
}

Thành viên

Trừ khi bạn chỉ định khác, các thuộc tính và phương thức của một lớp là công khai. Điều đó có nghĩa là, họ có thể được truy cập trong ba tình huống có thể

Từ bên ngoài lớp học được khai báo

Từ trong lớp mà nó được khai báo

Từ bên trong một lớp khác thực hiện lớp mà nó được khai báo

Cho đến bây giờ chúng tôi đã thấy tất cả các thành viên là thành viên công cộng. Nếu bạn muốn giới hạn khả năng truy cập của các thành viên của một lớp thì bạn xác định các thành viên của lớp là riêng tư hoặc được bảo vệ .

Thành viên tư nhân


Bằng cách chỉ định một thành viên riêng tư, bạn giới hạn khả năng truy cập của nó vào lớp mà nó được khai báo. Thành viên riêng không thể được tham chiếu từ các lớp kế thừa lớp mà nó được khai báo và không thể được truy cập từ bên ngoài lớp.

Một thành viên lớp có thể được đặt ở chế độ riêng tư bằng cách sử dụng từ khóa riêng trước mặt thành viên.
class MyClass {
   private $car = "skoda";
   $driver = "SRK";
   
   function __construct($par) {
      // Statements here run every time
      // an instance of the class
      // is created.
   }
   
   function myPublicFunction() {
      return("I'm visible!");
   }
   
   private function myPrivateFunction() {
      return("I'm  not visible outside!");
   }
}
Khi lớp MyClass được kế thừa bởi một lớp khác bằng cách sử dụng extends, myPublicFunction () sẽ hiển thị, cũng như trình điều khiển $. Lớp mở rộng sẽ không có bất kỳ nhận thức nào về việc truy cập vào myPrivateFunction và $ car, vì chúng được khai báo là riêng tư.

Thành viên được bảo vệ


Một thuộc tính hoặc phương thức được bảo vệ có thể truy cập được trong lớp mà nó được khai báo, cũng như trong các lớp mở rộng lớp đó. Các thành viên được bảo vệ không có sẵn ngoài hai loại lớp học đó. Một thành viên lớp có thể được bảo vệ bằng cách sử dụng từ khóa được bảo vệ trước thành viên.

Đây là phiên bản khác nhau của MyClass
class MyClass {
   protected $car = "skoda";
   $driver = "SRK";

   function __construct($par) {
      // Statements here run every time
      // an instance of the class
      // is created.
   }
   
   function myPublicFunction() {
      return("I'm visible!");
   }
   
   protected function myPrivateFunction() {
      return("I'm  visible in child class!");
   }
}

Giao diện

Các giao diện được định nghĩa để cung cấp một tên hàm phổ biến cho người thực hiện. Người thực hiện khác nhau có thể thực hiện các giao diện theo yêu cầu của họ. Bạn có thể nói, giao diện là bộ xương được thực hiện bởi các nhà phát triển.

Kể từ PHP5, có thể định nghĩa một giao diện, như thế này
interface Mail {
   public function sendMail();
}
Sau đó, nếu một lớp khác thực hiện giao diện đó, như thế này
class Report implements Mail {
   // sendMail() Definition goes here
}

Hằng số

Một hằng số có phần giống như một biến, trong đó nó giữ một giá trị, nhưng thực sự giống một hàm hơn vì một hằng số là bất biến. Một khi bạn khai báo một hằng, nó không thay đổi.

Khai báo một hằng số là dễ dàng, như được thực hiện trong phiên bản MyClass này
class MyClass {
   const requiredMargin = 1.7;
   
   function __construct($incomingValue) {
      // Statements here run every time
      // an instance of the class
      // is created.
   }
}
Trong lớp này, requiredMargin là một hằng số. Nó được khai báo với từ khóa const và trong mọi trường hợp không thể thay đổi nó thành bất kỳ thứ gì ngoài 1.7. Lưu ý rằng tên của hằng không có $ hàng đầu, như tên biến.

Lớp học trừu tượng


Một lớp trừu tượng là một lớp không thể khởi tạo, chỉ được kế thừa. Bạn khai báo một lớp trừu tượng với từ khóa trừu tượng , như thế này

Khi kế thừa từ một lớp trừu tượng, tất cả các phương thức được đánh dấu trừu tượng trong khai báo lớp của cha mẹ phải được định nghĩa bởi đứa trẻ; Ngoài ra, các phương pháp này phải được xác định với cùng tầm nhìn.
abstract class MyAbstractClass {
   abstract function myAbstractFunction() {
   }
}
Lưu ý rằng các định nghĩa hàm bên trong một lớp trừu tượng cũng phải được bắt đầu bằng tóm tắt từ khóa. Việc định nghĩa hàm trừu tượng bên trong một lớp không trừu tượng là không hợp pháp.

Từ khóa tĩnh


Khai báo các thành viên của lớp hoặc các phương thức là tĩnh làm cho chúng có thể truy cập được mà không cần khởi tạo lớp. Một thành viên được khai báo là tĩnh không thể được truy cập bằng một đối tượng lớp khởi tạo (mặc dù một phương thức tĩnh có thể).
<?php
   class Foo {
      public static $my_static = 'foo';
      
      public function staticValue() {
         return self::$my_static;
      }
   }
 
   print Foo::$my_static . "\n";
   $foo = new Foo();
   
   print $foo->staticValue() . "\n";
?> 

Từ khóa cuối cùng

PHP 5 giới thiệu từ khóa cuối cùng, ngăn các lớp con ghi đè một phương thức bằng cách thêm tiền tố vào định nghĩa cuối cùng. Nếu bản thân lớp đang được định nghĩa cuối cùng thì nó không thể được mở rộng.

Ví dụ sau đây dẫn đến lỗi nghiêm trọng: Không thể ghi đè phương thức cuối cùng BaseClass :: moreTesting ()
<?php

   class BaseClass {
      public function test() {
         echo "BaseClass::test() called<br>";
      }
      
      final public function moreTesting() {
         echo "BaseClass::moreTesting() called<br>";
      }
   }
   
   class ChildClass extends BaseClass {
      public function moreTesting() {
         echo "ChildClass::moreTesting() called<br>";
      }
   }
?>

Gọi các nhà xây dựng cha mẹ

Thay vì viết một hàm tạo hoàn toàn mới cho lớp con, hãy viết nó bằng cách gọi hàm tạo của cha mẹ một cách rõ ràng và sau đó làm bất cứ điều gì cần thiết ngoài việc khởi tạo lớp con. Đây là một ví dụ đơn giản
class Name {
   var $_firstName;
   var $_lastName;
   
   function Name($first_name, $last_name) {
      $this->_firstName = $first_name;
      $this->_lastName = $last_name;
   }
   
   function toString() {
      return($this->_lastName .", " .$this->_firstName);
   }
}
class NameSub1 extends Name {
   var $_middleInitial;
   
   function NameSub1($first_name, $middle_initial, $last_name) {
      Name::Name($first_name, $last_name);
      $this->_middleInitial = $middle_initial;
   }
   
   function toString() {
      return(Name::toString() . " " . $this->_middleInitial);
   }
}
Trong ví dụ này, chúng ta có một lớp cha (Tên), có hàm tạo hai đối số và lớp con (NameSub1), có hàm tạo ba đối số. 

Hàm tạo của các hàm NameSub1 bằng cách gọi rõ ràng hàm tạo của nó bằng cách sử dụng cú pháp :: (chuyển hai đối số của nó theo) và sau đó đặt một trường bổ sung. Tương tự, NameSub1 định nghĩa hàm toString () không phải hàm tạo của nó theo hàm của hàm cha mà nó ghi đè.

LƯU Ý - Một hàm tạo có thể được định nghĩa với cùng tên với tên của một lớp. Nó được định nghĩa trong ví dụ trên.

Thứ Sáu, 15 tháng 3, 2019

Khóa học lập trình PHP - PHP & XML

XML là một ngôn ngữ đánh dấu trông rất giống HTML. Tài liệu XML là văn bản thuần túy và chứa các thẻ được phân tách bằng <và>.

Có hai sự khác biệt lớn giữa XML và HTML


XML không xác định một bộ thẻ cụ thể mà bạn phải sử dụng.

XML cực kỳ kén chọn về cấu trúc tài liệu.

Học lập trình PHP chuyên nghiệp
Học lập trình PHP chuyên nghiệp

XML mang lại cho bạn sự tự do hơn rất nhiều so với HTML. HTML có một bộ thẻ nhất định: các thẻ <a> </a> bao quanh một liên kết, <p> bắt đầu đoạn và v.v. 

Tuy nhiên, một tài liệu XML có thể sử dụng bất kỳ thẻ nào bạn muốn. Đặt các thẻ <rating> </ rating> xung quanh xếp hạng phim, các thẻ <height> </ height> quanh chiều cao của ai đó. Do đó, XML cung cấp cho bạn tùy chọn để thiết bị các thẻ của riêng bạn.

>> XML rất nghiêm ngặt khi nói đến cấu trúc tài liệu. Học lập trình PHP HTML cho phép bạn chơi nhanh và lỏng với một số thẻ mở và đóng. Nhưng đây không phải là trường hợp với XML <<

Danh sách HTML không hợp lệ XML
<ul>
   <li>Braised Sea Cucumber
   <li>Baked Giblets with Salt
   <li>Abalone with Marrow and Duck Feet
</ul>
Đây không phải là tài liệu XML hợp lệ vì không có thẻ đóng </ li> để khớp với ba thẻ <li> mở. Mọi thẻ được mở trong tài liệu XML phải được đóng lại.

Danh sách HTML là XML hợp lệ
<ul>
   <li>Braised Sea Cucumber</li>
   <li>Baked Giblets with Salt</li>
   <li>Abalone with Marrow and Duck Feet</li>
</ul>

Phân tích một tài liệu XML

Mô-đun SimpleXML mới của PHP 5 giúp phân tích tài liệu XML, đơn giản. Nó biến một tài liệu XML thành một đối tượng cung cấp quyền truy cập có cấu trúc vào XML.

Để tạo một đối tượng SimpleXML từ một tài liệu XML được lưu trữ trong một chuỗi, hãy chuyển chuỗi đó sang Simplexml_load_opes () . Nó trả về một đối tượng SimpleXML.
<html>
   <body>
      
      <?php
         $note=<<<XML
         
         <note>
            <to>Gopal K Verma</to>
            <from>Sairamkrishna</from>
            <heading>Project submission</heading>
            <body>Please see clearly </body>
         </note>
         
         XML;
         $xml=simplexml_load_string($note);
         print_r($xml);
      ?>
  
   </body>
</html>
LƯU Ý - Bạn có thể sử dụng hàm simplexml_load_file (tên tệp) nếu bạn có nội dung XML trong một tệp.

Để biết chi tiết đầy đủ về chức năng phân tích cú pháp XML, hãy kiểm tra Tham chiếu chức năng PHP .

Tạo một tài liệu XML


SimpleXML tốt cho việc phân tích cú pháp các tài liệu XML hiện có, nhưng bạn không thể sử dụng nó để tạo một tài liệu mới từ đầu.

Cách dễ nhất để tạo tài liệu XML là xây dựng một mảng PHP có cấu trúc phản ánh cấu trúc của tài liệu XML và sau đó lặp lại qua mảng, in từng phần tử với định dạng phù hợp.
<?php
   $channel = array('title' => "What's For Dinner",
      'link' => 'http://menu.example.com/',
      'description' => 'Choose what to eat tonight.');
   
   print "<channel>\n";
   
   foreach ($channel as $element => $content) {
      print " <$element>";
      print htmlentities($content);
      print "</$element>\n";
   }
   
   print "</channel>";
?>
Nó sẽ tạo ra kết quả sau
http://menu.example.com/ Choose what to eat tonight.

Thứ Tư, 13 tháng 3, 2019

Học lập trình PHP - PHP & AJAX

AJAX là gì?


AJAX là viết tắt của A Ja vaScript và X ML đồng bộ . AJAX là một kỹ thuật mới để tạo các ứng dụng web tương tác tốt hơn, nhanh hơn và tương tác hơn với sự trợ giúp của XML, HTML, CSS và Java Script.

Học lập trình PHP  chuyên nghiệp
Học lập trình PHP chuyên nghiệp

Ứng dụng web thông thường truyền thông tin đến và từ sever bằng các yêu cầu đồng bộ. Điều này có nghĩa là bạn điền vào biểu mẫu, nhấn gửi và được chuyển đến một trang mới với thông tin mới từ máy chủ.

Với AJAX khi gửi được nhấn, JavaScript sẽ đưa ra yêu cầu đến máy chủ, diễn giải kết quả và cập nhật màn hình hiện tại. Theo nghĩa thuần túy nhất, người dùng sẽ không bao giờ biết rằng bất cứ thứ gì thậm chí được truyền đến máy chủ.

>> Để học hoàn toàn về AJAX, vui lòng tham khảo Hướng dẫn AJAX hướng dẫn học lập trình php <<

Ví dụ về PHP và AJAX


Để minh họa rõ ràng việc truy cập thông tin từ cơ sở dữ liệu bằng Ajax và PHP dễ dàng như thế nào, chúng tôi sẽ xây dựng các truy vấn MySQL một cách nhanh chóng và hiển thị kết quả trên "ajax.html". 

Nhưng trước khi chúng tôi tiến hành, hãy làm công việc mặt đất. Tạo một bảng bằng cách sử dụng lệnh sau đây.

LƯU Ý - Chúng tôi giả định rằng bạn có đủ đặc quyền để thực hiện các hoạt động sau của MySQL.

CREATE TABLE `ajax_example` (
   `name` varchar(50) NOT NULL,
   `age` int(11) NOT NULL,
   `sex` varchar(1) NOT NULL,
   `wpm` int(11) NOT NULL,
   PRIMARY KEY  (`name`)
) 

Bây giờ kết xuất dữ liệu sau vào bảng này bằng các câu lệnh SQL sau.

INSERT INTO `ajax_example` VALUES ('Jerry', 120, 'm', 20);
INSERT INTO `ajax_example` VALUES ('Regis', 75, 'm', 44);
INSERT INTO `ajax_example` VALUES ('Frank', 45, 'm', 87);
INSERT INTO `ajax_example` VALUES ('Jill', 22, 'f', 72);
INSERT INTO `ajax_example` VALUES ('Tracy', 27, 'f', 0);
INSERT INTO `ajax_example` VALUES ('Julie', 35, 'f', 90);

Tệp HTML phía máy khách

Bây giờ, hãy để tệp HTML phía máy khách của chúng tôi là ajax.html và nó sẽ có mã sau
<html>
   <body>
      
      <script language = "javascript" type = "text/javascript">
         <!--
            //Browser Support Code
            function ajaxFunction(){
               var ajaxRequest;  // The variable that makes Ajax possible!
               
               try {
                  // Opera 8.0+, Firefox, Safari
                  ajaxRequest = new XMLHttpRequest();
               }catch (e) {
                  // Internet Explorer Browsers
                  try {
                     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                  }catch (e) {
                     try{
                        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                     }catch (e){
                        // Something went wrong
                        alert("Your browser broke!");
                        return false;
                     }
                  }
               }
               
               // Create a function that will receive data 
               // sent from the server and will update
               // div section in the same page.
     
               ajaxRequest.onreadystatechange = function(){
                  if(ajaxRequest.readyState == 4){
                     var ajaxDisplay = document.getElementById('ajaxDiv');
                     ajaxDisplay.innerHTML = ajaxRequest.responseText;
                  }
               }
               
               // Now get the value from user and pass it to
               // server script.
     
               var age = document.getElementById('age').value;
               var wpm = document.getElementById('wpm').value;
               var sex = document.getElementById('sex').value;
               var queryString = "?age=" + age ;
            
               queryString +=  "&wpm=" + wpm + "&sex=" + sex;
               ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
               ajaxRequest.send(null); 
            }
         //-->
      </script>
  
      <form name = 'myForm'>
         Max Age: <input type = 'text' id = 'age' /> <br />
         Max WPM: <input type = 'text' id = 'wpm' />
         <br />
         
         Sex: <select id = 'sex'>
            <option value = "m">m</option>
            <option value = "f">f</option>
         </select>
   
         <input type = 'button' onclick = 'ajaxFunction()' value = 'Query MySQL'/>
   
      </form>
      
      <div id = 'ajaxDiv'>Your result will display here</div>
   </body>
</html>
LƯU Ý - Cách chuyển các biến trong Truy vấn theo tiêu chuẩn HTTP và có formA.

URL?variable1=value1;&variable2=value2;

Bây giờ đoạn mã trên sẽ cung cấp cho bạn một màn hình như được đưa ra dưới đây

LƯU Ý - Đây là màn hình giả và sẽ không hoạt động.Tuổi tối đa:

Tối đa WPM:

Giới tính:

Kết quả của bạn sẽ hiển thị ở đây

Tệp PHP phía máy chủ


Vì vậy, bây giờ kịch bản phía khách hàng của bạn đã sẵn sàng. Bây giờ chúng tôi phải viết kịch bản phía máy chủ của chúng tôi sẽ tìm nạp tuổi, wpm và sex từ cơ sở dữ liệu và sẽ gửi lại cho khách hàng. Đặt đoạn mã sau vào tệp "ajax-example.php".
<?php
   
   $dbhost = "localhost";
   $dbuser = "dbusername";
   $dbpass = "dbpassword";
   $dbname = "dbname";
   
   //Connect to MySQL Server
   mysql_connect($dbhost, $dbuser, $dbpass);
   
   //Select Database
   mysql_select_db($dbname) or die(mysql_error());
   
   // Retrieve data from Query String
   $age = $_GET['age'];
   $sex = $_GET['sex'];
   $wpm = $_GET['wpm'];
   
   // Escape User Input to help prevent SQL Injection
   $age = mysql_real_escape_string($age);
   $sex = mysql_real_escape_string($sex);
   $wpm = mysql_real_escape_string($wpm);
   
   //build query
   $query = "SELECT * FROM ajax_example WHERE sex = '$sex'";
   
   if(is_numeric($age))
   $query .= " AND age <= $age";
   
   if(is_numeric($wpm))
   $query .= " AND wpm <= $wpm";
   
   //Execute query
   $qry_result = mysql_query($query) or die(mysql_error());
   
   //Build Result String
   $display_string = "<table>";
   $display_string .= "<tr>";
   $display_string .= "<th>Name</th>";
   $display_string .= "<th>Age</th>";
   $display_string .= "<th>Sex</th>";
   $display_string .= "<th>WPM</th>";
   $display_string .= "</tr>";
   
   // Insert a new row in the table for each person returned
   while($row = mysql_fetch_array($qry_result)) {
      $display_string .= "<tr>";
      $display_string .= "<td>$row[name]</td>";
      $display_string .= "<td>$row[age]</td>";
      $display_string .= "<td>$row[sex]</td>";
      $display_string .= "<td>$row[wpm]</td>";
      $display_string .= "</tr>";
   }
   echo "Query: " . $query . "<br />";
   
   $display_string .= "</table>";
   echo $display_string;
?>
Bây giờ hãy thử bằng cách nhập một giá trị hợp lệ trong "Tuổi tối đa" hoặc bất kỳ hộp nào khác và sau đó nhấp vào nút Truy vấn MySQL.Tuổi tối đa:

Tối đa WPM:

Giới tính:

Kết quả của bạn sẽ hiển thị ở đây

Nếu bạn đã hoàn thành thành công bài học này thì bạn sẽ biết cách sử dụng MySQL, PHP, HTML và Javascript song song để viết các ứng dụng Ajax.

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...