За последние 24 часа нас посетили 18256 программистов и 1620 роботов. Сейчас ищут 1725 программистов ...

PHP clas вызов функции

Тема в разделе "PHP для новичков", создана пользователем cocka, 17 фев 2010.

  1. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    не работает такой вызов функции в классе
    Код (Text):
    1. $this->time = "year(15)";
    2. $this->$this->time
    так тоже пробывал
    Код (Text):
    1. $this->time = "year(15)";
    2. $function = $this->time;
    3.             $this->{$function};
    какие альтернативы есть?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Терпеть не могу, когда выдают какой-то кусок говна (кода) без объяснения того, что он должен делать.
     
  3. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    я все объяснил.. в прошлой теме и мне сказали не грузите своей проблемой а задавайте вопрос по сути.. тут наоборот.. решите уже..
    нужно вызвать фунцию скажем $this->year(...). Так вызывается без проблем но с переменной которая хранит в себе тот же стринг нет.. как можно решить это?
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1) Отказаться от вызова функции через переменную
    2) Прочитать на php.net как такое реализовывается.
     
  5. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    я сюда наверное не просто так обратился когото погонять или что мне лень.. я когда в такие дебри захожу то это до вечности, все что угодно узнаю но не то.. какие критерии поиска можно было задать?
    задавал php clas и безрезультатно страницах на 50


    разобрался.. так фунционирует, мне хваит
    Код (Text):
    1. $this->{$this->time}($this->interval)
    Kreker, ты куда пропал? ))
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    жжошь!

    где траву берешь? отсыпь?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а покажи сам класс? полностью?

    дай мыслью твоей проникнуться? к стопам припасть?
     
  8. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    держи

    PHP:
    1. <?php
    2.  
    3. class statisticsSMS
    4. {
    5.     // Deklaration einer Eigenschaft
    6.     var $data = 'ein Standardwert';
    7.     var $Sformat;
    8.     var $Sbetweento;
    9.     var $Stime;
    10.     var $Sdb;
    11.     var $Sinterval;
    12.    
    13.     public function __construct($data)
    14.     {
    15.         $this->data = $data;
    16.     }
    17.     public function initialValues()
    18.     {
    19.         /*if(!empty($this->data['timesearch']))
    20.         {
    21.             $Sdatefor = 'date(mktime(0, 0, 0, $this->data["timesearch"]))';
    22.         }
    23.         else
    24.         $Sdatefor = '';*/
    25.         switch ($this->data['time'])
    26.         {
    27.             case day:
    28.                     $this->Sformat = "%d.%m.%Y";
    29.                     $this->Sbetweento = "1 MONTH), 1";
    30.                     $this->Stime = "day";
    31.                     $this->inteval = "31";
    32.                     //$date = date("d.m.Y", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y")));
    33.                 break;
    34.                
    35.             case month:
    36.                     $this->Sformat = "%m.%Y";
    37.                     $this->Sbetweento = "1 YEAR), DAYOFYEAR(CURDATE())";
    38.                     $this->Stime = "month";
    39.                     $this->interval = "12";
    40.                     //$date = date("M Y", mktime(0, 0, 0, date("m")-$i, date("d"), date("Y")));
    41.                 break;
    42.                
    43.             case year:
    44.                     $this->Sformat = "%Y";
    45.                     $this->Sbetweento = "10 YEAR), DAYOFYEAR(CURDATE())";
    46.                     $this->Stime = "year";
    47.                     $this->interval = "15";
    48.                 break;
    49.         }
    50.         //Anfang
    51.     $dateen = array('01.', '02.', '03.', '04.', '05.', '06.', '07.', '08.', '09.', '10.', "11.", '12.');
    52.     $datede = array('Januar ', 'Februar ', 'März ', 'April ', 'Mai ', 'Juni ', 'Juli ', 'August ', 'September ', 'Oktober ', 'November ', 'Dezember ');
    53.     $qQuery = mysql_query('
    54.         SELECT COUNT(sms_id) as number,
    55.         DATE_FORMAT( FROM_UNIXTIME( sms_zeit ) , "'.$this->Sformat.'" ) AS date,
    56.         SUM(sms_preis) as cost
    57.         FROM tbl_sms
    58.         WHERE (sms_zeit) BETWEEN UNIX_TIMESTAMP(SUBDATE(SUBDATE(NOW(), INTERVAL '.$this->Sbetweento.')) AND UNIX_TIMESTAMP(NOW())
    59.         GROUP BY date
    60.         ORDER BY sms_zeit
    61.         ');
    62.     $this->data ='';
    63.    
    64.         echo mysql_error();
    65.         while($rQuery=mysql_fetch_array($qQuery))
    66.         {
    67.             //Leere Ausgabe
    68.             $this->Sdb = $rQuery['date'];
    69.             $this->{$this->Stime}();
    70.             //Ausgabe
    71.             $this->data .= "<item name='".$rQuery['date']."' number='".$rQuery['number']." SMS / ".$rQuery['cost']." €'/>";
    72.         }
    73.         //End
    74.         $this->{$this->Stime}();
    75.         return "<content>".$this->data."</content>";
    76.     }
    77.     public function year()
    78.     {
    79.         for($year = $this->interval-1; $year >= 0; $year--)
    80.         {
    81.             $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, date("m"),date("d"),date("Y")-$this->interval));
    82.             //echo $datum." ".$rQuery['date']."<br>";
    83.             if($datum != $this->Sdb)
    84.             {
    85.                 $this->data .= "<item name='".$datum."' number='0 SMS / 0 €'/>";
    86.                 $this->interval = $year;
    87.             }
    88.             else
    89.             {
    90.             $year = 0;
    91.             $this->interval--;
    92.             }
    93.         }
    94.     }
    95.     public function month()
    96.     {
    97.         for($month = $this->interval-1; $month >= 0; $month--)
    98.         {
    99.             $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, date("m")-$this->interval,date("d"),date("Y")));
    100.             //echo $datum." ".$rQuery['date']."<br>";
    101.             if($datum != $this->Sdb)
    102.             {
    103.                 $this->data .= "<item name='".$datum."' number='0 SMS / 0 €'/>";
    104.                 $this->interval = $month;
    105.             }
    106.             else
    107.             {
    108.             $month = 0;
    109.             $this->interval--;
    110.             }
    111.         }
    112.     }
    113.     public function day()
    114.     {
    115.         for($day = $this->interval-1; $day >= 0; $day--)
    116.         {
    117.             $datum = date(str_replace("%", "", $this->betweenvor), mktime(0, 0, 0, date("m"),date("d")-$this->interval,date("Y")));
    118.             //echo $datum." ".$rQuery['date']."<br>";
    119.             if($datum != $this->Sdb)
    120.             {
    121.                 $this->data .= "<item name='".$datum."' number='0 SMS / 0 €'/>";
    122.                 $this->interval = $day;
    123.             }
    124.             else
    125.             {
    126.             $day = 0;
    127.             $this->interval--;
    128.             }
    129.         }
    130.     }
    131. }
    132. ?>
    если вникнешь в класс дай знать что можно улучшить..
     
  9. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Видите ли в чем дело...
    Перед тем как написать свой ответ я реализовал поставленную задачу двумя способами и проверил насколько просто добывается информация из мануала. Так вот нужная информация добывается за 4 клика мышью, из них два для доступа к оглавлению. Еще один клик покажет другой вариант реализации.

    1) http://www.phpwiki.ru/%D0%94%D0%BB%D1%8 ... 1%83%D0%BC
    2) Для тренировки ума.
    3) Для поиска решений.
    4) Для нахождения новых понятий с последующим их гуглением
    5)...

    Я намекнул.

    Попробуйте глянуть оглавление.
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Молодой человек не надо тупить.

    Вам и в прошлой теме сказали то же самое. Объясните задачу, без комментирования ваших попыток ее решения в виде
    "мне надо выполнить строку"
     
  11. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0
    Спасибо очень интерессная ссылка..
    Simpliest
    а насчет вопроса.. понял.
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    епть... насяльника... мой маленький моск усох от полета мысли
     
  13. cocka

    cocka Активный пользователь

    С нами с:
    29 мар 2009
    Сообщения:
    72
    Симпатии:
    0