Научи ме

Програмиране => PHP => Темата е започната от: dns в 21 Април 2011, 13:49:31

Титла: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 13:49:31
Как се подхожда когато класовете ме са в различни файлове.
Предполагам че с include , обаче ако се наложи да вмъкна прекалено много файлове в един няма ли да стане тежко приложението.

А може ли да се инклудват  класове в методи от друг клас или това е откровена простотия на един начинаещ  ;D

Питам щото искам да направя един общ клас през който да минават всички заявки . Да му направя методи който да извикват другите класове.И да стане нещо като гара-разпределителна.

Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: HD в 21 Април 2011, 13:59:08
Така принципно, за да е възможно това, което искаш трябва да include-неш класовете, с които ще правиш този разпределителен клас.  Може да използавш този метод

function __autoload($class_name) {
    include $class_name . '.php';
}

Дай малко повече подробности какво точно искаш да направиш?
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: dns в 21 Април 2011, 14:05:32
Така принципно, за да е възможно това, което искаш трябва да include-неш класовете, с които ще правиш този разпределителен клас.  Може да използавш този метод

function __autoload($class_name) {
    include $class_name . '.php';
}

Дай малко повече подробности какво точно искаш да направиш?


Искам вътре в метода да извиквам други методи на класове разположени в други файлове.
Примерно имам клас А  и искам да използвам метода на клас Б  който е записан на друг файл.
Как се процедира
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: HD в 21 Април 2011, 14:22:16
Ами значи на това му се вика наследяване на класове и методи(inheritance).  Незнам дали си гледал видеото на Иван, но ако не си го гледай задължително.
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: dns в 21 Април 2011, 14:37:45
Ами значи на това му се вика наследяване на класове и методи(inheritance).  Незнам дали си гледал видеото на Иван, но ако не си го гледай задължително.

 extends ли имаш в предвид или нещо друго.Аз съм ги гледал всичките видеа ама малко съм ги позабравил
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: HD в 21 Април 2011, 14:51:12
точно това имам предвид... Само че свойствато и методи от класа, който наследяваш трябва да са protected
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: dns в 21 Април 2011, 15:23:49
точно това имам предвид... Само че свойствато и методи от класа, който наследяваш трябва да са protected

Аха ся го пробвах , аз бях разбрал че extends прави едностранна връзка , а то било двустранно:

и главният клас може да ползва методи от "sub"-класа

и "sub"-класа може да ползва методи от главният клас  ...нали така?

------------------------------------------------------
Чакай да те питам и нещо друго , тамън съм те "хванал" да помагаш  ;D
...има ли смисъл от това:

<?php

class DB1
{

    public function 
izvicvam($pass)
    {
        
$get_pass=(int)$pass;
        if(
$pass==1234)
        {
        
DB2::exec();
        }
    }
}


class 
DB2 extends DB1
{

    protected  static function 
exec()
    {
         echo 
' connection ok';
    }

}


$mycar=new DB1();

echo 
$mycar->izvicvam(1234);

Идеята ми е  преди да се извика даден метод или клас да се проверява  за параметър играещ ролята на пас

...ето още един пример:

class RF
{

    public function  __construct($pass)
    {
        $get_pass=(int)$pass;
        if($pass==1234)
        {
            return $this->izvicvam();
        }
    }

    private  function izvicvam()
    {
         echo '<br /><br /> pass ok';
       
    }
}

$mycar=new RF (1234);
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: HD в 21 Април 2011, 16:18:08
Разгледай Singleton шаблона от уроците на Иван. Там той показва нещо подобно на това, което правиш ти, но принципа е същия.
Титла: Re:PHP ООП Вмъкване на класове от външни файлеве.
Публикувано от: dns в 21 Април 2011, 17:56:42
Разгледай Singleton шаблона от уроците на Иван. Там той показва нещо подобно на това, което правиш ти, но принципа е същия.
Гледал съм ги , даже това дето ти го показвам е някаква моя с разновидност на Singleton , просто исках да питам дали е добра разновидност , или поне като идея (...аз съм доста нов във програмирането и когато се опитам да правя свои неща все се чудя дали са добри като идея и изпълнение.)
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 19:06:13
Къв ти е проблема с инклудването в крайна сметка?
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: HD в 21 Април 2011, 19:08:52
Е що да има някакъв проблем. Просто е любопитен човека.  ;D
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 19:26:18
Къв ти е проблема с инклудването в крайна сметка?

Ами искам да направя главен клас който да е гара разпределителна ...в който да се използват методи  от всички други класове намиращи се в други файлове

примерно във файла: index.php  имам един основен клас A , който използва методите на всички други класове чрез  extends, ОБАЧЕ тези другите класове искам да ги разположа в други файлове примерно в B.php , C.php  , D.php  и т.н.   ...за да мога да  използвам  всички методи на другите класове трябва да  инклудна файловете class-B.php , class-C.php  , class-D.php R и т.н   в  файла index.php   нали?

Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 19:29:29
Да, не виждам какъв е проблема!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 19:37:37
Да, не виждам какъв е проблема!
Еми ако инклудна примерно 20 файла в index.php няма ли да е много тежко за изпълнение
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 21:52:16
Първо не виждам що ще инклудва 20 файла, после колко по бавно ще стане според теб? Само по себе си ооп е по бавно от процедурно писане, и какво от това, ползите от него са по големи от тази бързина. Не виждам как е един файл ще има нъжда от викане едновременно на 20 класа - някво нелогично ми се струва!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 23:01:28
Ами искам да направя един клас през който да минават всички заявки и вътре в този главен клас да организирам цялата работа на сайта и всички функционалности да са прикачат с extends

Вижда ми се някак по подредено и лесно за добавяне на нови функционалности и класове , ама в крайна сметка моя поглед е на начинаещ.
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 23:13:38
Ами ако направиш това както ми звучи ще направиш най голямата анти ооп грешка. Какъв е смисълът всички заявки да с в един клас? Къде изчезва идеята за капсулиране и абстракция, ако заявката за логин и странициране е в един клас? Не се сърди обаче почети какво всъщност е ооп по принцип и защо е предпочетена пред процедурата да речем.
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 23:16:13
Ами ако направиш това както ми звучи ще направиш най голямата анти ооп грешка. Какъв е смисълът всички заявки да с в един клас? Къде изчезва идеята за капсулиране и абстракция, ако заявката за логин и странициране е в един клас? Не се сърди обаче почети какво всъщност е ооп по принцип и защо е предпочетена пред процедурата да речем.
Е няма какво да се сърдя , то аз за това питам за да знам кое е по добре  и кое не  :)
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 23:17:24
Освен това файловете с класове като описания и тези които имат само имплементация не е задължително да са един файл примерно

file1.php
class Test {

public function ne6tosi(){}

}


file2.php
$obj = new Test();
$obj->ne6tosi();

Това някъде да имаш класове и някъде да ги използваш какво общо има?
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 23:22:27
Отвори някакъв прост фрейм и виж как са решени нещата там като идейна концепция. Кое къде е защо е та, какво прави, къде е правилно да се вика или използва! Повечето неща са изпитани с времето от много хора които са се сблъскали със същите проблеми както ти и аз (аз да не мислиш че съм някой факир или от сорта) обаче на основата на тяхното знание като го ползваш и осмислиш ще създадеш нещо което може да е от полза и на тези от които сега се учим (учениците да станат учители един вид). Аз ся нещо съм зле иначе една идея за показване на структурата на Кодигнайтър да речем кое къде е, защо е там и как се ползва по смисъл не по пример в работата!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 23:48:51
Май ще трябва да минавам на уроците за CodeIgniter.

Значи брадчеда иска да му направя едни сайт  и вече мисля да го направя с  CodeIgniter и после да го сложа в портфолиото си , и да търся работа с него , не че ще е достатъчно ама за начало бива  ;D

Като го направя мога ли да ти го пратя  и да ми  дадеш някви насоки ако съм объркал нещо , да не се излагам с портфолиото като кандидатствам за работа.
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 21 Април 2011, 23:52:19
Що реши че аз съм някакво светило в програмирането или пък гуру на Кодигнайтър :) Аз не съм и програмист!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: dns в 21 Април 2011, 23:58:56
Що реши че аз съм някакво светило в програмирането или пък гуру на Кодигнайтър :) Аз не съм и програмист!
Не знам колко си вещ ,а и няма кой да ми дава насоки.Не ми се ще да направя някаква шлоковица , и после да я тура в портофолиото  и да чакам да ми се обадят за рабата  ;D
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: jazzman в 22 Април 2011, 00:23:50
Аз не съм и програмист!
Е, то,  by the way, колко действащи програмисти има във форума ?
Титла: Re: PHP ООП Вмъкване на класове от външни файлов
Публикувано от: wuser в 22 Април 2011, 00:48:18
Е то реално всички сме действащи програмисти, порномисти и погромисти. А колко си искарват хляба с това е друг въпрос ;) Ами Керкенез си го изкарва, ама той е по-скоро дизайнер и макар да пише php повече js, css, html, smarty. За Стил всички знаем – пловдивска някакаква, пише на на разни диези, пак за мрежата. То и Керкенез е от Майна таун. От майново май е и Метост дето прави уроците за Кодигнайтер, също професионалист, то личи и по уроците де. Нашия скъп Мися дето половин година не е писал и той се хвали, че е почнал работа. Понякога пишат и други профита, ама много рядко и имат по под сто коментара. Та от редовните са тези по мой данни.
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: jazzman в 22 Април 2011, 01:10:17
Гоше, отговора ти ме развесели, истински  ;D
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 22 Април 2011, 08:07:29
Ся чувам че керкенеза и Методи са от Пловдив! Айде пак почваме с фантастиката!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: wuser в 22 Април 2011, 10:07:24
Ами всъщност от теб го знам, аз на живо не съм ги виждал.
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 22 Април 2011, 18:15:02
Ами всъщност от теб го знам, аз на живо не съм ги виждал.
Винаги съм ти казвал че периодично ходене на УНГ :) лекар ще ти е от полза. Аз също не съм ги виждал  на живо не знам пак какво си разбрал - твърде често чуваш само вътрешният си глас!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: NoBBy в 22 Април 2011, 19:20:10
Темата е излишно голяма при положение че отговора е даден още във втория коментар...
__autoload ти върши перфектна работа, ако вече имаш доста по-сложна структура на проекта можеш да разгледаш и spl_autoload_register (http://php.net/manual/en/function.spl-autoload-register.php)

Просто трябва да реализираш малко логика и на база на името на класа да определяш местоположението му в проекта.
Можеш да използваш префикси с които да обозначиш директориите в които да се търсят въпросните класове, или дори да вземеш пример от Зенд, и да кръщаваш класовете си спрямо целия път до файла на класа (пр: Zend_Auth_Adapter_DbTable)

Ако си фен на пространствата от имена можеш даже да си спестиш дългите имена
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: echeveria в 22 Април 2011, 19:40:06
...Ако ползва нова версия на рнр (5.3) иначе пространствата няма как да ги ползва!
Титла: Re: PHP ООП Вмъкване на класове от външни файлове
Публикувано от: NoBBy в 22 Април 2011, 21:06:59
Вярно, не го споменах понеже винаги съм бил привърженик към използването на последните версии на какъвто и да е бил софтуер ;)