ФорумСообществоФлейм → Что бы могло из этого получиться?

Что бы могло из этого получиться?

  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz 29 августа 2008 г. 22:34


    <?php

    define ("TABLE_PARAMS", "Table_Params");

    define ("TYPE_INTEGER", "integer");
    define ("TYPE_STRING", "string");
    define ("TYPE_TEXT", "text");
    define ("TYPE_DATE", "date");

    define ("TYPE_INTEGER_SIZE", 11);
    define ("TYPE_STRING_SIZE", 100);

    class tables{
    var $scheme= array();
    function scheme( $args= array() ){
    $this->scheme= $args;
    }

    function scheme2sql(){
    $sql= '';
    foreach($this->scheme as $table_name=>$table_structure){
    $sql.= "CREATE TABLE IF NOT EXISTS `{$table_name}` (\n";
    //1 Структуру таблицы представим в виде Имени поля и параметров поля
    foreach($table_structure as $field_name=>$pram){
    //1.2 Если это не массив параметров таблицы
    if($field_name!=TABLE_PARAMS){
    if( is_array($pram) && (sizeof($pram)>0) ){
    $sql.= "\t";
    $sql.= "`{$field_name}` ";
    // PARAMETER TYPE
    if(isset($pram['type'])){
    switch ($pram['type']) {
    case TYPE_INTEGER:
    $size= TYPE_INTEGER_SIZE;
    if(isset($pram['size'])) $size= $pram['size'];
    $sql.= "INT ( {$size} ) ";
    break;
    case TYPE_STRING:
    $size= TYPE_STRING_SIZE;
    if(isset($pram['size'])) $size= $pram['size'];
    $sql.= "VARCHAR( {$size} ) ";
    break;
    case TYPE_TEXT:
    $sql.= "TEXT ";
    break;
    }
    }else exit("field `{$field_name}` have no type parameter");
    // PARAMETER TYPE

    // PARAMETER UNSIGNED
    if(isset($pram['unsigned'])){
    if($pram['unsigned']==true) $sql.= "UNSIGNED ";
    }
    // PARAMETER UNSIGNED

    // PARAMETER NOT_NULL
    if(isset($pram['not_null'])){
    if($pram['not_null']==true) $sql.= "NOT NULL ";
    }
    // PARAMETER NOT_NULL

    // PARAMETER DEFAULT
    if(isset($pram['default'])){
    $sql.= "DEFAULT '{$pram['default']}' ";
    }
    // PARAMETER DEFAULT

    $sql.= ",\n";
    }else{ exit('field have no params'); }
    }//1.2
    }//1

    $table_param= $table_structure[TABLE_PARAMS];

    // PRIMARY KEY
    if(isset($table_param['primary']))
    $sql.= "\n\tPRIMARY KEY ( `{$table_param['primary']}` )\n";
    else $sql.= "\n\tPRIMARY KEY ( `Id` )\n";
    // PRIMARY KEY

    $sql.= ") ";

    // DB TYPE
    if(isset($table_param['type']))
    $sql.= "TYPE = {$table_param['type']} ";
    else $sql.= "TYPE = MYISAM ";
    // DB TYPE

    //CHARACTER_SET
    if(isset($table_param['charset'])) $sql.= "CHARACTER SET {$table_param['charset']} ";
    else $sql.= "CHARACTER SET cp1251 ";
    //CHARACTER_SET

    //COLLATE
    if(isset($table_param['collate'])) $sql.= "COLLATE {$table_param['collate']} ";
    else $sql.= "COLLATE cp1251_general_ci ";
    //COLLATE

    $sql.= ";\n\n";
    }
    return $sql;
    }

    function fields_rename( $args= array() ){
    }

    function fields_delete( $args= array() ){
    }

    function migrate( $args= array() ){
    }
    };

    $tables= new tables();

    $tables->scheme(
    array(
    'publications'=>array(
    'Id'=>array('type'=>'integer', 'size'=>7, 'not_null'=>true, 'unsigned'=>true, 'default'=>1),
    'Parent_Id'=>array('type'=>'integer', 'size'=>7, 'not_null'=>true, 'default'=>1),
    'Meta'=>array('type'=>'string', 'size'=>200, 'not_null'=>true),
    'Content'=>array('type'=>'text', 'not_null'=>true),
    'Table_Params'=>array('primary'=>'Id', 'type'=>'MYISAM', 'charset'=>'cp1251', 'collate'=>'cp1251_general_ci')
    ),
    'messages'=>array(
    'Id'=>array('type'=>'integer', 'size'=>11, 'not_null'=>true, 'unsigned'=>true, 'default'=>1),
    'From_User_Id'=>array('type'=>'integer', 'size'=>11, 'not_null'=>true, 'unsigned'=>true, 'default'=>1),
    'For_User_Id'=>array('type'=>'integer', 'size'=>11, 'not_null'=>true, 'unsigned'=>true, 'default'=>1),
    'Looked'=>array('type'=>'integer', 'size'=>1, 'not_null'=>true, 'unsigned'=>true, 'default'=>1),
    'Text'=>array('type'=>'string', 'size'=>200, 'not_null'=>true),
    'Table_Params'=>array('primary'=>'Id', 'type'=>'MYISAM', 'charset'=>'cp1251', 'collate'=>'cp1251_general_ci')
    )
    )
    );

    echo $tables->scheme2sql();

    echo '<br />';

    /*

    in progress….


    $tables->migrate( array('all_force'=>true, 'all_fields_data_migrate'=>true) );

    $tables->fields_rename(
    array(
    'publications'=>array(
    'parent_id'=>'parent',
    'updated'=>'was_updated'
    )
    )
    );

    $tables->fields_delete(
    array(
    'publications'=>array(
    'parent_id', 'updated'
    )
    )
    );

    */

    ?>


    Как думаете, из этого получится что то хорошее? ;)
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 29 августа 2008 г. 22:57, спустя 23 минуты 18 секунд

    многа букафф не осилил!
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 29 августа 2008 г. 22:58, спустя 49 секунд

    WTF?
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 29 августа 2008 г. 23:14, спустя 16 минут 16 секунд

    killich, ппц у тебя код ;)
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 29 августа 2008 г. 23:29, спустя 14 минут 25 секунд

    killich, все еще под php4 пишешь?
    я бы написал так (помоему, так лучше читается. хотя свой код всегда лучше читается :)
    <?php

    define ("TABLE_PARAMS", "Table_Params");


    define ("TYPE_INTEGER", "integer");

    define ("TYPE_STRING", "string");

    define ("TYPE_TEXT", "text");

    define ("TYPE_DATE", "date");


    define ("TYPE_INTEGER_SIZE", 11);

    define ("TYPE_STRING_SIZE", 100);


    class tables
    {
    public $scheme = array();

    public function scheme($args = array())
    {
    $this->scheme = $args;
    }

    public function scheme2sql()
    {
    $sql = '';

    foreach ($this->scheme as $table_name=>$table_structure)
    {
    $sql .= "CREATE TABLE IF NOT EXISTS `{$table_name}` (\n";

    foreach ($table_structure as $field_name => $pram)
    {
    if ($field_name != TABLE_PARAMS)
    {
    if (is_array($pram) && (sizeof($pram) > 0))
    {
    $sql .= "\t";

    $sql .= "`{$field_name}` ";

    if (isset($pram['type']))
    {
    switch ($pram['type'])
    {
    case TYPE_INTEGER:

    $size = TYPE_INTEGER_SIZE;

    if (isset($pram['size'])) $size = $pram['size'];

    $sql .= "INT ( {$size} ) ";

    break;

    case TYPE_STRING:

    $size = TYPE_STRING_SIZE;

    if (isset($pram['size'])) $size = $pram['size'];

    $sql .= "VARCHAR( {$size} ) ";

    break;

    case TYPE_TEXT:

    $sql .= "TEXT ";

    break;
    }
    }
    else
    {
    exit("field `{$field_name}` have no type parameter");
    }

    if (isset($pram['unsigned']))
    {
    if($pram['unsigned'] == true) $sql .= "UNSIGNED ";
    }

    if (isset($pram['not_null']))
    {
    if($pram['not_null'] == true) $sql .= "NOT NULL ";
    }

    if (isset($pram['default']))
    {
    $sql .= "DEFAULT '{$pram['default']}' ";
    }

    $sql .= ",\n";
    }
    else
    {
    exit('field have no params');
    }
    }
    }

    $table_param= $table_structure[TABLE_PARAMS];

    if (isset($table_param['primary']))
    {
    $sql .= "\n\tPRIMARY KEY ( `{$table_param['primary']}` )\n";
    }
    else
    {
    $sql .= "\n\tPRIMARY KEY ( `Id` )\n";
    }

    $sql .= ") ";

    if(isset($table_param['type']))
    {
    $sql .= "TYPE = {$table_param['type']} ";
    }
    else
    {
    $sql .= "TYPE = MYISAM ";
    }

    if (isset($table_param['charset']))
    {
    $sql .= "CHARACTER SET {$table_param['charset']} ";
    }
    else
    {
    $sql .= "CHARACTER SET cp1251 ";
    }

    if (isset($table_param['collate']))
    {
    $sql .= "COLLATE {$table_param['collate']} ";
    }
    else
    {
    $sql .= "COLLATE cp1251_general_ci ";
    }

    $sql .= ";\n\n";
    }

    return $sql;
    }

    public function fields_rename($args = array())
    {

    }

    public function fields_delete($args= array())
    {

    }

    public function migrate($args= array())
    {

    }
    }
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 29 августа 2008 г. 23:31, спустя 1 минуту 54 секунды

    из этого вышел бы какой-нибудь результат выполнения данного скрипта
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 29 августа 2008 г. 23:33, спустя 2 минуты 2 секунды

    я бы написал так

    айаб хотя бы кучу дурацких глобальных констант внутрь класса засунул, раз уже не php4

    Как думаете, из этого получится что то хорошее?

    хороший коврег под дверью бы получился :)
    а вообще можно было бы и пару слов по русски про это дело написать
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 29 августа 2008 г. 23:35, спустя 2 минуты 3 секунды

    айаб хотя бы кучу дурацких глобальных констант внутрь класса засунул, раз уже не php4

    мне было лень)) я вообще ни глобальные переменные, ни константы (кроме предопределенных) не юзаю
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 29 августа 2008 г. 23:36, спустя 1 минуту 20 секунд

    походу создает таблицу в БД из массива этот класс =)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!