Рейтинг
+10.54
голосів:
15
avatar

PHP  

XSD-to-PHP - конвертуємо XSD схему в PHP класи

Нещодавно мені довелось працювати зі стандартом UBL (Universal Business Language), потрібно було створювати та приймати повідомлення в цьому форматі. Полазивши по нету, я так і не знайшов жодного готового рішення, і вирішив, що це досить цікава тема, щоб самому розробити.

Сьогодні я закінчив першу робочу версію, яка здатна ґенерувати PHP класи з XSD схеми, конвертувати XML в PHP (binding), та ґенерувати XML з PHP моделей.

Наразі я відтестував з схемами UBL 2.0, і ще однією простою схемою, це можна побачити в тестах. Подальша робота над даною утилітою буде полягати у покращенні якості читання XSD схем та роботою з невірними схемами.

Буду дуже вдячний за надіслані актуальні схеми, які я включу до набору тестів та за відгуки взагалі.

Завантажити код можна тут github.com/moyarada/XSD-to-PHP

Як боротись з SQL-ін’єкцією за допомогою PHP

Боримось з SQL-ін’єкцією за допомогою PHPSQL-ін’єкція це найбільш небезпечний тип атаки, адже саме вона стоїть за незліченною кількістю випадків злому які пережили корпоративні сайти та портали, і просто особисті домашні сторінки. Насправді захистити свій проект доволі легко – для цього потрібно перш за все зрозуміти в чому суть цієї проблеми та внести в свій код деякі зміни для захисту.


( Читати далі )

Коректний гео пошук в Sphinx

Як виявилось, стандартний підхід для геопошуку в Sphinx не працює.
Тобто якщо ви використаєте для індексування наступний вираз:
sql_query            = select id, radians(longitude) as longitude, radians(latitude) as latitude from locations

Індекс не буде створено. Відповідно пошук працювати не буде. Навіть не знаю чи це баг чи фіча, але виправляється досить просто.
Слід додати одне текстове поле до результату:
sql_query            = select id, radians(longitude) as longitude, radians(latitude) as latitude, location_name as location_name from locations


Індекс буде створено коректно.

Гео пошук за допомогою Sphinx, MySQL та PHP

Недавно виникла потреба реалізувати пошук найближчих місць, тобто зробити гео пошук. В MySQL на скільки мені відомо таких вбудованих функцій немає. Є гарний опис як це зробити самому без вбудованих функцій.
Сам автор зазначає що швидкість є досить малою і за допомогою Sphinx можна досягти кращих результатів.
Під час пошуку знайшов гарний опис як організувати geo/spatial пошук за допомогою Sphinx, MySQL та PHP. Sphinx є важливим, його замінити не можна. PHP та MySQL можна підміняти на те що вам більше підходить.

Новая встреча симфонистов Symfony Camp UA 2010, Киев

Symfony Camp UA 2010

Для участия нужно пройти регистрацию, участие — бесплатное.

Некоторые подробности:

  • дата проведения, 3 июля 2010 года
  • город проведения Украина Киев
  • место проведения выбирается (возможно найдется кто-то из участников, чья фирма сможет предоставить либо оплатить конференц зал)
  • время с 10:00 до 18:00, с перерывом на обед (как же без него) и кофеек (без этого тоже никак)
  • программа конференции будет сформирована по мере регистрации участников и докладчиков


Доклады:

Итак все желающие, поучаствовать в SYMFONY CAMP UA 2010 и не только послушать, но и рассказать что-то из своего либо чужого опыта, предлагайте свои доклады.

Есть желание поддержать конференцию? Разместите один из понравившихся баннеров на вашем сайте.

Все подробности на офф сайте конференции symfonycamp.org.ua.

Професійна організація Вашого проекту з простором імен PHP.

PHP зробив величезний крок вперед у червні 2009 з виходом версії 5.3. Вона не мала дуже багато змін, як у версії 5,0, але в підсумку ввела ряд нових можливостей мови, в тому числі простір імен, що може значно поліпшити спосіб організувати Ваше PHP в об'єктно-орієнтованій парадигмі.

Той, хто написав код Java, C + +, або будь-якою мовою, в ASP.NET мав задоволення працювати з ними, але нам PHP розробникам довелося вирішувати з наслідуванням імен шляхом визначення довгих префіксів класу.


( Читати далі )

Посібник по Smarty українською тема-посилання

Хороший посібник по Smarty українською мовою. Smarty це популярний шаблонізатор для PHP. Є досить зручним та використовується у багатьох проектах. Головні переваги це простота та швидкість.

6 фрагментів PHP-коду для взаємодії з Twitter тема-посилання

Представлено декілька фрагментів коду на PHP, які дозволяють взаємодіяти Твіттером. Підказав, де це знаходиться, @webjuniornet

Zend Framework 1.9.7, 1.8.5, та 1.7.9 Реліз

Команда Zend Framework анонсувала про вихід трьох версій всім відомого нам фреймворку. Це перший реліз згідно нової політики безпеки. Приводом для оновлення старших версій стали виявлені вразливості в безпеці після проведення аудиту — як наслідок було виправлено близько 40 помилок. Розробники настирливо рекомендують оновити Zend Framework до останньої версії. Повниий список змін для:

framework.zend.com/changelog/1.9.7
framework.zend.com/changelog/1.8.5
framework.zend.com/changelog/1.7.9

На блозі розробників зазначено що це останній запланований реліз серії 1.9. Цього тижня запланований вихід бета реліз 1.10.0, який був очікуваний після виходу в грудні минулого року альфа релізу.

Як запостити Twitter зі свого php-скрипта

Одного разу постала задача постити твітер з клієнтського скрипта.
Досить весело вийшло, бо рішення одразу ж підказав сам Твітер :) (появився новий твіт з посиланням на саме те, що мені потрібно).
Базується на використання cURL бібліотеки.


<?php
// Set username and password
$username = 'username';
$password = 'password';

// The message you want to send
$message = 'is twittering from php using curl';

// The twitter API address
$url = 'http://twitter.com/statuses/update.xml';
// Alternative JSON version
// $url = 'http://twitter.com/statuses/update.json';
// Set up and execute the curl process

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);

// check for success or failure
if (empty($buffer)) {
    echo 'message';
} else {
    echo 'success';
}
?>


Взято звідси