Пишем сайт на haXe/PHP - Базы данных

Эксперимента ради я решил написать на haXe свой сайт http://team.flashkarma.com
Когда структура сайта продумана и пора приступать к реализации, первое, с чего стоит начать - База Данных. Традиционно для PHP используется MySQL, т.к. найти хостинг с этой базой данных проще всего. В haXe/PHP для работы с базами есть пакет php.db.*. Для своего удобства я написал простенький класс-обвёртку.

package;
import php.db.Connection;
import php.db.Mysql;

class DB {
        private static var instance:DB = null;
        public static var prefix:String = "";
        private static var db_cfg:Array<Dynamic> = [
                {user:"root", pass:"", host:"localhost", name:"team" },
                {user:"", pass:"", host:"", name:"" }
        ];
       
        public var c:Connection;
       
        public static function get():DB {
                if(instance == null) instance = new DB();
                return instance;
        }
        private function new() {
                var cfg:Dynamic = null;
                if(untyped __php__("$_SERVER[\"HTTP_HOST\"]") == "team.elmortem") { // локальный хостинг
                        cfg = db_cfg[0];
                } else { // реальный хостинг
                        cfg = db_cfg[1];
                }
                c = Mysql.connect( {user:cfg.user, socket:null, port:0, pass:cfg.pass, host:cfg.host, database:cfg.name} );
        }
}

По сути это конфиг для БД с автоматическим коннектом. При этом проверяется домен (в моём случае http://team.elmortem - локальный хостинг на базе Денвера) для выбора нужных данных. Далее в коде применяется всё это следующим образом.
var db:DB = DB.get();
var sql:String = "SELECT * FROM `"+DB.prefix+"blog` WHERE `id`="+id+" LIMIT 1";
var rs:ResultSet = db.c.request(sql);
var r = rs.results();
for(item in r) {
        trace(item.id);
}

Всё достаточно просто, если вы уже имели дело с PHP и MySQL, то вам будет очень комфортно работать в haXe.

Бонус
Из кода можно понять, как использовать внутренние PHP-пременные, никак не представленные в haXe/PHP.

var server_name:String = untyped __php__("$_SERVER[\"SERVER_NAME\"]");

А вот вызвать PHP функцию можно так.
untyped __call__("function_name", arg1, arg2, arg3, etc...);

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
m
Z
9
E
C
K
Enter the code without spaces and pay attention to upper/lower case.