[Phpmyadmin-devel] Clarification on Design of PMA_RecentFavoriteTable Class

Edward Cheng c4150221 at gmail.com
Fri Apr 18 02:56:31 CEST 2014


Hi, Chanaka Dharmarathna,

I'm sorry code I provided have problems,
see sample blow, I fixed them
<pre>
<?php
header("Content-type:text/plain");

class Sample
{

    private $selfData;
    private $selfType;

    private static $_instance;

    public static function getInstance($type)
    {
        if (is_null(self::$_instance)) {
            self::$_instance[$type] = new Sample($type);
        } else {
            if (! array_key_exists($type, self::$_instance)) {
                self::$_instance[$type] = new Sample($type);
            }
        }
        return self::$_instance[$type];
    }

    public function __construct($type)
    {
        $this->selfType = $type;
    }
    public function setData($data)
    {
        $this->selfData = $data;
    }
    public function getData()
    {
        return $this->selfData;
    }
}

Sample::getInstance('A')->setData('AData');
echo Sample::getInstance('A')->getData();
Sample::getInstance('B')->setData('BData');
echo Sample::getInstance('A')->getData();
echo Sample::getInstance('B')->getData();

</pre>

Results is "ADataADataBData", is that ok?


2014-04-18 1:01 GMT+08:00 Chanaka Dharmarathna <pe.chanaka.ck at gmail.com>:
> On Thu, Apr 17, 2014 at 9:47 AM, Edward Cheng <c4150221 at gmail.com> wrote:
>>
>> Hi,
>> I thought we have these code can avoid errors, in my new PR I improve it.
>> <pre>
>> /**
>>  * Returns class instance.
>>  *
>>  * @param string $type the table type
>>  *
>>  * @return PMA_RecentFavoriteTable
>>  */
>> public static function getInstance($type)
>> {
>>     if (is_null(self::$_instance)) {
>>         self::$_instance[$type] = new PMA_RecentFavoriteTable($type);
>>     } else {
>>         if (self::$_instance[$type]->table_type != $type) {
>>             self::$_instance[$type] = new PMA_RecentFavoriteTable($type);
>>         }
>>     }
>>     return self::$_instance[$type];
>> }
>> </pre>
>> Does my PR fix it?
>>
>> 2014-04-17 0:02 GMT+08:00 Chanaka Dharmarathna <pe.chanaka.ck at gmail.com>:
>> > Hi,
>> >
>> > It seems like, the latest PMA_RecentFavoriteTable is trying to behave as
>> > singleton design pattern. Is that a requirement ? I mean is there any
>> > reason
>> > for making it singleton ? By the way, there is good possibility to
>> > create
>> > new instances again and again with current logic.
>> >
>> > And the class has $table_type instance variable and more. Isn't it risky
>> > behaviour to share a static instance throughout the web server, which
>> > has
>> > instance variable which used in functions of that instance ?
>> >
>
>
> Hi Edward,
>
> Your code does not avoid creating many instances. By the way, we better
> first clarify our self, the requirement. Any thoughts ?
>
> Regards !
> --
> Chanaka Dharmarathna
> http://chanakaindrajith.blogspot.com/
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/NeoTech
> _______________________________________________
> Phpmyadmin-devel mailing list
> Phpmyadmin-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/phpmyadmin-devel
>



-- 
Edward Cheng




More information about the Developers mailing list