Re: OOP problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm not sure I've understood you correctly, but you may try something
like the following primitive autoloader (I didn't debug it, it's just
an example):

class Base
{
    protected $_path = '';

    public function construct($base_path)
    {
        $this->_path = $base_path;
    }
    public function __get($name)
    {
        $requested_path = $this->_path . DIRECTORY_SEPARATOR . $name;
        if (is_dir($requested_path))
        {
            return new Base($requested_path);
        }
        else if (is_file($requested_path . '.php'))
        {
            include ($requested_path . '.php');
            $classname = ucfirst($name);
            return new $clasname();
        }
    }
}

// Assuming you have Mysql class in /home/user/project/classes/db/mysql.php
// you may try

$base = new Base("/home/user/project/classes/");
$base->db->mysql->someFunctionOfMysqlClass();

2011/12/15 Dominik Halvoník <dominik.halvonik@xxxxxxxxx>:
> Hello,
>
> I would like to ask you for help. This days I am trying to build one of my
> applications. But I have problem which stopped me. I have folder whit php
> files like connect.php, delete.php etc. These files contains classes named
> the same as files. So in file connect.php is class Connect. These files are
> placed in folder named mysql and this folder is inside folder named db. In
> folder db is a php file named mysql.php, in this file I include classes
> from folder mysql, after include I declare class MySQL and in it I have
> method __construct(). In this method I create dynamic objects from included
> classes. And this is the problem that I can not solve, I have more then one
> of this files(mysql.php[whit class MySQL], oracle.php[whit class Oracle]
> etc.) and I need to include them to file called db.php that is in the main
> folder of my app. In db.php is an class called db, how can I add classes
> MySQL, Oracle etc. to class db? I try to use abstract class whit __set and
> __get methods but I also need to include class db to main class
> application. I am really sorry for my English, so please be indulgent. So I
> need to connect classes like this:
>
> application->db->mysql->connect, but I can not use extends because in php
> you can have only one parent class. The reason why I am trying to do
> something like this is because I want to call methods like this:
> $test = new application();
> $test->db->connect();
>
> If it is mysql or othet database I set in config.php file.
>
> I need to achieve this schema( -> is something like ../ it means that it is
> one level up folder):
>
> connec.php(class Connect MySql)->
> select.php(class Select MySql) ->
> .... -> mysql.php(class MySQL include all classes, Connect...)->
> .... ->
> ... ->
> -> db.php(class db include all classes, MySQL, Oracle..)
> connec.php(class Connect Oracle)->
> select.php(class Select Oracle ) ->
> .... -> oracle .php(class Oracle include all classes, Connect...)->
> .... ->
> ... ->
>
> download.php(class Download)->
> unzip.php(class Unzip) ->
> .... -> files.php(class Files include all classes, Download...) ->
> file.php(class file include class Files)
> .... ->
> ... ->
>
> hash.php(class Hash)->
> capcha.php(class Capcha) ->
> .... -> secure.php(class Secure include all classes, Hash...) ->
> security.php(class security include class Secure)
> .... ->
> ... ->
> ect. ect. ect. ect. ect. ect. ect. ect. ect. ect. ect. ect. ect. ect. ect.
>
> And in the end, in the same folder as db.php and security.php I will have
> file application.php which will contain class application and in its
> __construct() method I will make link classes db, security, file ect. ect.
> So I will just include file application.php make object from class
> application and then just do $object->db->connect()(of course if it will by
> MySql or other database will be stored in some config.php file).
>
> Thanks,
>
> Dominik

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux