Эксперимента ради я решил написать на 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...);