1、Developing Object-Oriented PHP,PHP-Object Oriented Programming,2,Object-Oriented Programming,Object-oriented programming (OOP) refers to the creation of reusable software objects that can be easily incorporated into multiple programs An object refers to programming code and data that can be treated
2、as an individual unit or component Objects are often also called components,PHP-Object Oriented Programming,3,Object-Oriented Programming,Data refers to information contained within variables or other types of storage structures The functions associated with an object are called methods The variable
3、s that are associated with an object are called properties or attributes Popular object-oriented programming languages include C+, Java, and Visual Basic,PHP-Object Oriented Programming,4,Object-Oriented Programming,Figure 11-1 Accounting program,PHP-Object Oriented Programming,5,Understanding Encap
4、sulation,Objects are encapsulated all code and required data are contained within the object itself Encapsulated objects hide all internal code and data An interface refers to the methods and properties that are required for a source program to communicate with an object,PHP-Object Oriented Programm
5、ing,6,Understanding Encapsulation,Encapsulated objects allow users to see only the methods and properties of the object that you allow them to see Encapsulation reduces the complexity of the code Encapsulation prevents other programmers from accidentally introducing a bug into a program, or stealing
6、 code,PHP-Object Oriented Programming,7,Object-Oriented Programming and Classes,The code, methods, attributes, and other information that make up an object are organized into classes An instance is an object that has been created from an existing class Creating an object from an existing class is ca
7、lled instantiating the object An object inherits its methods and properties from a class it takes on the characteristics of the class on which it is based,PHP-Object Oriented Programming,8,Using Objects in PHP Scripts,Declare an object in PHP by using the new operator with a class constructor A clas
8、s constructor is a special function with the same name as its class that is called automatically when an object from the class is instantiated The syntax for instantiating an object is:$ObjectName = new ClassName();,PHP-Object Oriented Programming,9,Using Objects in PHP Scripts,The identifiers for a
9、n object name: Must begin with a dollar sign Can include numbers or an underscore Cannot include spaces Are case sensitive$Checking = new BankAccount(); Can pass arguments to many constructor functions$Checking = new BankAccount(01234587, 1021, 97.58);,PHP-Object Oriented Programming,10,Using Object
10、s in PHP Scripts (continued),After an object is instantiated, use a hyphen and a greater-than symbol (-) to access the methods and properties contained in the object Together, these two characters are referred to as member selection notation With member selection notation append one or more characte
11、rs to an object, followed by the name of a method or property,PHP-Object Oriented Programming,11,Using Objects in PHP Scripts (continued),With methods, include a set of parentheses at the end of the method name, just as with functions Like functions, methods can also accept arguments$Checking-getBal
12、ance();$CheckNumber = 1022;$Checking-getCheckAmount($CheckNumber);,PHP-Object Oriented Programming,12,Working with Database Connections as Objects,Access MySQL database connections as objects by instantiating an object from the mysqli class To connect to a MySQL database server:$DBConnect = mysqli_c
13、onnect(“localhost“, “dongosselin“, “rosebud“, “real_estate“); To connect to the MySQL database server using object-oriented style:$DBConnect = new mysqli(“localhost“, “dongosselin“,“rosebud“, “real_estate“);,PHP-Object Oriented Programming,13,Instantiating and Closing a MySQL Database Object,This st
14、atement also uses the mysqli() constructor function to instantiate a mysqli class object named $DBConnect$DBConnect = new mysqli(“localhost“, “dongosselin“,“rosebud“, “real_estate“); To explicitly close the database connection, use the close() method of the mysqli class$DBConnect-close();,PHP-Object
15、 Oriented Programming,14,Selecting a Database,Select or change a database with the mysqli_select_db() function Pass two arguments to the mysqli_select_db() function: 1. The variable representing the database connection 2. The name of the database you want to use,PHP-Object Oriented Programming,15,Se
16、lecting a Database (continued),Example of procedural syntax to open a connection to a MySQL database server: $DBConnect = mysqli_connect(“localhost“, “dongosselin“, “rosebud“); mysqli_select_db($DBConnect, “real_estate“); / additional statements that access or manipulate the database mysqli_close($D
17、BConnect); An object-oriented version of the code: $DBConnect = mysqli_connect(“localhost“, “dongosselin“, “rosebud“); $DBConnect-select_db(“real_estate“); / additional statements that access or manipulate the database $DBConnect-close();,PHP-Object Oriented Programming,16,Handling MySQL Errors,With
18、 object-oriented style, you cannot terminate script execution with the die() or exit() functions $DBConnect = mysqli_connect(“localhost“, “dongosselin“, “rosebud“)Or die(“Unable to connect to the database server.“. “Error code “ . mysqli_connect_errno(). “: “ . mysqli_connect_error() . “;,PHP-Object
19、 Oriented Programming,17,Handling MySQL Errors,With object-oriented style, check whether a value is assigned to the mysqli_connect_errno() or mysqli_connect_error() functions and then call the die() function to terminate script execution $DBConnect = new mysqli(“localhost“, “dgosselin“, “rosebud“);
20、if (mysqli_connect_errno()die(“Unable to connect to the database server.“. “Error code “ . mysqli_connect_errno(). “: “ . mysqli_connect_error() . “;,PHP-Object Oriented Programming,18,Handling MySQL Errors,For any methods of the mysqli class that fail (as indicated by a return value of false), term
21、inate script execution by appending die() or exit() functions to method call statements$DBName = “guitars“;$DBConnect-select_db($DBName)Or die(“Unable to select the database.“. “Error code “ . mysqli_errno($DBConnect). “: “ . mysqli_error($DBConnect) . “;,PHP-Object Oriented Programming,19,Executing
22、 SQL Statements,With object-oriented style, use the query() method of the mysqli class To return the fields in the current row of a resultset into an indexed array use: The mysqli_fetch_row() function To return the fields in the current row of a resultset into an associative array use: The mysqli_fe
23、tch_assoc() function,PHP-Object Oriented Programming,20,Executing SQL Statements (continued),$TableName = “inventory“; $SQLstring = “SELECT * FROM inventory“; $QueryResult = $DBConnect-query($SQLstring)Or die(“Unable to execute the query.“. “Error code “ . $DBConnect-errno. “: “ . $DBConnect-error)
24、. “; echo “; echo “MakeModel PriceInventory“; $Row = $QueryResult-fetch_row(); do echo “$Row0“;echo “$Row1“;echo “$Row2“;echo “$Row3“;$Row = $QueryResult-fetch_row(); while ($Row);,PHP-Object Oriented Programming,21,Defining Custom PHP Classes,Data structure refers to a system for organizing data Th
25、e functions and variables defined in a class are called class members Class variables are referred to as data members or member variables Class functions are referred to as member functions or function members,PHP-Object Oriented Programming,22,Defining Custom PHP Classes,Classes: Help make complex
26、programs easier to manage Hide information that users of a class do not need to access or know about Make it easier to reuse code or distribute your code to others for use in their programs Inherited characteristics allow you to build new classes based on existing classes without having to rewrite t
27、he code contained in the existing one,PHP-Object Oriented Programming,23,Creating a Class Definition,To create a class in PHP, use the class keyword to write a class definition A class definition contains the data members and member functions that make up the class The syntax for defining a class is
28、: class ClassName data member and member function definitions ,PHP-Object Oriented Programming,24,Creating a Class Definition (continued),The ClassName portion of the class definition is the name of the new class Class names usually begin with an uppercase letter to distinguish them from other ident
29、ifiers Within the classs curly braces, declare the data type and field names for each piece of information stored in the structureclass BankAccount data member and member function definitions$Checking = new BankAccount();,PHP-Object Oriented Programming,25,Creating a Class Definition,Class names in
30、a class definition are not followed by parentheses, as are function names in a function definition $Checking = new BankAccount(); echo The $Checking object is instantiated from the . get_class($Checking) . “ class.“;Use the instanceof operator to determine whether an object is instantiated from a gi
31、ven class,PHP-Object Oriented Programming,26,Storing Classes in External Files,PHP provides the following functions that allow you to use external files in your PHP scripts: include() require() include_once() require_once() You pass to each function the name and path of the external file you want to
32、 use,PHP-Object Oriented Programming,27,Storing Classes in External Files,include() and require() functions both insert the contents of an external file, called an include file, into a PHP script include_once() and require_once() functions only include an external file once during the processing of
33、a script Any PHP code must be contained within a PHP script section () in an external file,PHP-Object Oriented Programming,28,Storing Classes in External Files,Use the include() and include_once() functions for files that will not prevent the application from running Use the require() or require_onc
34、e() functions for files that will prevent the app from running if not present External files can be used for classes and for any type of PHP code or HTML code that you want to reuse on multiple Web pages You can use any file extension you want for include files,PHP-Object Oriented Programming,29,Col
35、lecting Garbage,Garbage collection refers to cleaning up or reclaiming memory that is reserved by a program PHP knows when your program no longer needs a variable or object and automatically cleans up the memory for you The one exception is with open database connections,PHP-Object Oriented Programm
36、ing,30,Information Hiding,Information hiding states that any class members that other programmers, sometimes called clients, do not need to access or know about should be hidden Helps minimize the amount of information that needs to pass in and out of an object Reduces the complexity of the code tha
37、t clients see Prevents other programmers from accidentally introducing a bug into a program by modifying a classs internal workings,PHP-Object Oriented Programming,31,Using Access Specifiers,Access specifiers control a clients access to individual data members and member functions There are three le
38、vels of access specifiers in PHP: public, private, and protected The public access specifier allows anyone to call a classs member function or to modify a data member,PHP-Object Oriented Programming,32,Using Access Specifiers,The private access specifier prevents clients from calling member function
39、s or accessing data members and is one of the key elements in information hiding Private access does not restrict a classs internal access to its own members Private access restricts clients from accessing class members,PHP-Object Oriented Programming,33,Using Access Specifiers,Include an access spe
40、cifier at the beginning of a data member declaration statementclass BankAccount public $Balance = 0; Always assign an initial value to a data member when you first declare it class BankAccount public $Balance = 1 + 2; ,PHP-Object Oriented Programming,34,Serializing Objects,Serialization refers to th
41、e process of converting an object into a string that you can store for reuse This enables the sharing of objects within the same session used by multiple scripts Session variables could be used but you would need to instantiate a new object and reassign the session variable values to the data member
42、s each time you call a script this could be time consuming if the object has dozens of data members Serialization stores both data members and member functions into strings,PHP-Object Oriented Programming,35,Serializing Objects,To serialize an object, pass an object name to the serialize() function$
43、SavedAccount = serialize($Checking); To convert serialized data back into an object, you use the unserialize() function$Checking = unserialize($SavedAccount); Serialization is also used to store the data in large arrays To use serialized objects between scripts, assign a serialized object to a sessi
44、on variablesession_start();$_SESSION(SavedAccount) = serialize($Checking);,PHP-Object Oriented Programming,36,Working with Member Functions,Create public member functions for any functions that clients need to access Create private member functions for any functions that clients do not need to acces
45、s Access specifiers control a clients access to individual data members and member functions,PHP-Object Oriented Programming,37,Working with Member Functions,class BankAccount public $Balance = 958.20;public function withdrawal($Amount) $this-Balance -= $Amount; if (class_exists(“BankAccount“)$Check
46、ing = new BankAccount(); elseexit(“The BankAccount class is not available!“); printf(“Your checking account balance is $%.2f.“,$Checking-Balance);$Cash = 200;$Checking-withdrawal(200);printf(“After withdrawing $%.2f, your checking account balance is $%.2f.“, $Cash, $Checking-Balance);,PHP-Object Ori
47、ented Programming,38,Initializing with Constructor Functions,A constructor function is a special function that is called automatically when an object from a class is instantiated class BankAccount private $AccountNumber;private $CustomerName;private $Balance;function _construct() $this-AccountNumber
48、 = 0;$this-Balance = 0;$this-CustomerName = “;,PHP-Object Oriented Programming,39,Initializing with Constructor Functions,The _construct() function takes precedence over a function with the same name as the class Constructor functions are commonly used in PHP to handle database connection tasks,PHP-
49、Object Oriented Programming,40,Cleaning Up with Destructor Functions,A default constructor function is called when a class object is first instantiated A destructor function is called when the object is destroyed A destructor function cleans up any resources allocated to an object after the object i
50、s destroyed,PHP-Object Oriented Programming,41,Cleaning Up with Destructor Functions,A destructor function is commonly called in two ways: When a script ends When you manually delete an object with the unset() function To add a destructor function to a PHP class, create a function named _destruct()function _construct() $DBConnect = new mysqli(“localhost“, “dongosselin“,“rosebud“, “real_estate“) function _destruct() $DBConnect-close(); ,