За последние 24 часа нас посетили 18424 программиста и 1706 роботов. Сейчас ищут 873 программиста ...

class define serialize

Тема в разделе "Вопросы от блондинок", создана пользователем Padaboo, 11 июн 2010.

  1. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    PHP:
    1. <?
    2. $arr = array ( "a" => "b",
    3.                 "c" => "d"
    4.                 );
    5. define("SOME_CONST",serialize($arr));
    6. var_dump(unserialize(SOME_CONST));
    7.  
    так все нормально...

    PHP:
    1. <?php
    2. $arr = array ( "a" => "b",
    3.                "c" => "d"
    4.              );
    5. define("SOME_CONST",serialize($arr));
    6. class A {
    7.   private $asd = unserialize(SOME_CONST);
    8. }
    9. ?>
    10.  
    а так нет, почему?
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  3. http://www.php.net/manual/en/language.o ... erties.php
    в двух словах: потому что так нельзя.
     
  4. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    config.php
    PHP:
    1. <?php
    2.  
    3. define("DEFAULT_USER_MESSAGE", "");
    4.  
    5. define("DEFAULT_USER_NAME", "Unknown");
    6.  
    7. ?>
    parser.php
    PHP:
    1. <?php
    2. class Parser {
    3.  
    4.     protected $user_name    = DEFAULT_USER_NAME;
    5.     protected $user_message = DEFAULT_USER_MESSAGE;
    6.     protected $smiles_array = array(";)" => "img/smiles/smile.gif",
    7.                                    ":)" => "img/smiles/gentel.gif",
    8.                                    ":]" => "img/smiles/pray.gif"
    9.                                   );
    10.  
    11.     public function  __construct($name,$message) {
    12.  
    13.         if($name != ''){
    14.  
    15.             $this->user_name = $this->prepare($name);
    16.  
    17.         }
    18.        
    19.         if($message != ''){
    20.  
    21.             $this->user_message = $this->prepare($message);
    22.  
    23.         }
    24.     }
    25.  
    26.     protected function prepare($text){
    27.  
    28.         return htmlspecialchars($text);
    29.  
    30.     }
    31.  
    32.     public  function set_smiles(){
    33.  
    34.         foreach ($this->smiles_array as  $key => $value ){
    35.  
    36.            $this->user_message = str_replace($key, "<img src='".$value."'>", $this->user_message);
    37.  
    38.         }
    39.  
    40.     }
    41.  
    42.     public  function build_string(){
    43.  
    44.         return '<span class="chat_string">'.'['.date("H:i:s").']'.'['.$this->user_name.'] '.$this->user_message.'</span>';
    45.  
    46.     }
    47.  
    48. }
    49. ?>
    вот что получается
    PHP:
    1. <?php
    2. include("core/modules/config.php");
    3. include("core/class/parser.php");
    4. $message = new Parser('vasia','ololo pish pish :) ');
    5. $message->set_smiles();
    6. echo $message->build_string();
    7. ?>
    хотел просто в конфиг вынести массив со смайликами...
    как в таком случае делать?
    если все при создании объекта передавать в __construct , ну не знаю как то это некрасиво будет, переделаю конечно если так неправильно
    зы: сильно не пинайте, мой первый класс ^^
     
  5. Padaboo

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

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    как то так?
    PHP:
    1. <?
    2. class Parser {
    3.  
    4.     /**
    5.     * Имя пользователя.
    6.     * @var string
    7.     */
    8.     protected $user_name  = null;
    9.  
    10.     /**
    11.     * Сообщение пользователя.
    12.     * @var string
    13.     */
    14.     protected $user_message = null;
    15.  
    16.     /**
    17.     * Массив со смайлами и путями к ним.
    18.     * @var array
    19.     */
    20.     protected $smiles_array = array();
    21.  
    22.     /**
    23.     * Конструктор
    24.     */
    25.     public function  __construct($name,$message,$default_username,$smiles,$name_length = 12,$message_length = 60) {
    26.  
    27.         $this->smiles_array = $smiles;
    28.  
    29.         if($name != ''){
    30.  
    31.             $this->user_name = $this->prepare($name,$name_length);
    32.  
    33.         } else {
    34.             $this->user_name = $default_username;
    35.         }
    36.  
    37.         if($message != ''){
    38.  
    39.             $this->user_message = $this->prepare($message,$message_length);
    40.  
    41.         }
    42.     }
    43.    
    44.     /**
    45.     * Удаление нежелательных символов и обрезание
    46.     * до нужной длинны
    47.     * @param string $text переменная для обработки
    48.     * @param string $length максимальная длинна переменной.
    49.     * @return string
    50.     */
    51.     protected function prepare($text,$length){
    52.  
    53.         $text = substr($text, 0, $length);
    54.         return htmlspecialchars($text);
    55.  
    56.     }
    57.  
    58.     /**
    59.     * Заменяет подстроку на картинку смайлика
    60.     *
    61.     * @return string
    62.     */
    63.     public  function set_smiles(){
    64.  
    65.         foreach ($this->smiles_array as  $key => $value ){
    66.  
    67.            $this->user_message = str_replace($key, "<img src='".$value."'>", $this->user_message);
    68.  
    69.         }
    70.  
    71.     }
    72.  
    73.     /**
    74.     * Формирует строку сообщения
    75.     *
    76.     * @return string
    77.     */
    78.     public  function build_string(){
    79.  
    80.         return '<span class="chat_string">'.'['.date("H:i:s").']'.'['.$this->user_name.'] '.$this->user_message.'</span>';
    81.  
    82.     }
    83.  
    84. }
    85. ?>