Пишем сайт на 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>.

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

CAPTCHA
Этот вопрос помогает предотвратить автоматический спам
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.
To prevent automated spam submissions leave this field empty.