Design a class that should always return a single object ?
Answers were Sorted based on User's Feedback
Answer / webguy
The answer is to use : The singleton pattern
Description:
Some application resources are exclusive in that there is
one and only one of this type of resource. For example, the
connection to a database through the database handle is
exclusive. You want to share the database handle in an
application because it's an overhead to keep opening and
closing connections, particularly during a single page fetch.
The singleton pattern covers this need. An object is a
singleton if the application can include one and only one of
that object at a time. The code in Listing 3 shows a
database connection singleton in PHP V5.
Ex: Singleton.php
<?php
require_once("DB.php");
class DatabaseConnection
{
public static function get()
{
static $db = null;
if ( $db == null )
$db = new DatabaseConnection();
return $db;
}
private $_handle = null;
private function __construct()
{
$dsn = 'mysql://root:password@localhost/photos';
$this->_handle =& DB::Connect( $dsn, array() );
}
public function handle()
{
return $this->_handle;
}
}
print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
?>
This code shows a single class called DatabaseConnection.
You can't create your own DatabaseConnection because the
constructor is private. But you can get the one and only one
DatabaseConnection object using the static get method. The
UML for this code is shown in Figure 3.
Figure 3. The database connection singleton
The database connection singleton
The proof in the pudding is that the database handle
returned by the handle method is the same between two calls.
You can see this by running the code on the command line.
% php singleton.php
Handle = Object id #3
Handle = Object id #3
%
The two handles returned are the same object. If you use the
database connection singleton across the application, you
reuse the same handle everywhere.
You could use a global variable to store the database
handle, but that approach only works for small applications.
In larger applications, avoid globals, and go with objects
and methods to get access to resources.
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / amitverma
class DB {
private static $_singleton;
private $_connection;
private function __construct(){
$this->_connection = mysql_connect();
}
public static function getInstance(){
if (is_null (self::$_singleton)) {
self::$_singleton = new DB();
}
return self::$_singleton;
}
}
$db = DB::getInstance();
| Is This Answer Correct ? | 2 Yes | 2 No |
Answer / sam
In my opinion class can not return any object. Only methods
can return the objects
| Is This Answer Correct ? | 0 Yes | 1 No |
hi..this is kumar...how m,uch time req for php preparation?is any coaching avaiable in vizag for php?
which institute provide better PHP trainning in delhi? please tell me how much salary can freshers get ? thanku
How can I add text to an image?
1 Answers IPSR Solutions, Rushmore Consultancy,
What is the difference between abstract class and interface in php?
What is member function?
What is prepare in php?
What is the use of header in php?
What is the php function that removes the last element of the array and returns it?
Do I need to install php after xampp?
What is the difference between core php and php?
write a program to generate bill screen 1.1st page should get the number of products to be billed. 2.2nd page should display the number of rows according to the number of products given in the first page. 3.Each row should have a text box for a.product name b.quantity c.unit price d.item price = quantity x unit price This should be automatically calculated not to be entered by the user. 4.After entering the products calculate sales-tax for the total amount which 8.25%. 5.After entering these values you have to generate the bill in the next page with a unique number for the bill. can anyone solve this problem..i am in need to solve this problem..pls help me
Tell us what does $_cookie means?