Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Функции PHP
 
 

Функции PHP / Java

Есть два способа связать PHP и Java: вы можете либо интегрировать PHP в среду Java Servlet, что является более стабильным и эффективным решением, либо интегрировать поддержку Java в PHP. Первый предоставляется SAPI-модулем, который является интерфейсом с Servlet-сервером, второй - РНР-расширением Java.

PHP 4 ext/java предоставляет простые и эффективные средства для создания и вызова методов Java-объектов из PHP. JVM создаётся с использованием JNI, и всё запускается in-process. Свтроенные инструкции для ext/java можно найти в файле php4/ext/java/README.
Внимание

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, включая имена его функций и относящуюся к нему документацию, может измениться в последующих версиях PHP без уведомления. Используйте это расширение на свой страх и риск.

Требования

У Вас должна быть установлена виртуальная машина Java (Java VM).

Установка

Это расширение PECL не поставляется вместе с PHP.

В PHP 4 исходные файлы этого расширения PECL могут быть найдены в директории ext/ внутри исходных файлов PHP или по ссылке PECL выше. In order to use these functions you must compile PHP with Java support by using the --with-java[=DIR] where DIR points to the base install directory of your JDK. This extension can only be built as a shared extension. Additional build extensions can be found in php-src/ext/java/README.

Пользователям Windows необходимо включить php_java.dll в php.ini для использования этих функций. В PHP 4 этот DLL находится в директории extensions/ внутри директории бинарного дистрибутива PHP для Windows. Вы можете скачать DLL этого расширения PECL со страницы PHP Downloads или http://snaps.php.net/.

Примечание: В дополнение к включению данного модуля, для Windows, работающей с PHP версии <= 4.0.6, Вам необходим jvm.dll в системной директории. Но никакие DLL не требуются для PHP версий > 4.0.6.

Пример 1. Пример работы с Java

<?php
// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' $system->getProperty('java.version') . '<br />';
echo 
'Java vendor=' $system->getProperty('java.vendor') . '<br />';
echo 
'OS=' $system->getProperty('os.name') . ' ' .
             
$system->getProperty('os.version') . ' on ' .
             
$system->getProperty('os.arch') . ' <br />';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
                      
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo 
$formatter->format(new Java('java.util.Date'));
?>

Пример 2. Пример AWT

<?php
// This example is only intended to be run as a CGI.

$frame  = new Java('java.awt.Frame''PHP');
$button = new Java('java.awt.Button''Hello Java World!');

$frame->add('North'$button);
$frame->validate();
$frame->pack();
$frame->visible True;

$thread = new Java('java.lang.Thread');
$thread->sleep(10000);

$frame->dispose();
?>

Примечания:

  • new Java() создаст экземпляр класса, если подходящий конструктор доступен. Если параметры не передаются, используется конструктор по умолчанию, так как он предоставляет доступ к классам вроде java.lang.System, которые экспонируют большую часть своей функциональности через static-методы.

  • При доступе к члену экземпляра сначала ищутся свойства "боба"/bean (компонента), а затем - public-поля. Иначе говоря, print $date.time сначала пытается разрешиться как $date.getTime(), а затем как $date.time.

  • Доступ к статическим членам и членам экземпляра может быть выполнен на объекте с тем же самым синтаксисом. Кроме того, если java-объект имеет тип java.lang.Class, то можно получить доступ также к static-членам класса (полям и методам).

  • Возникающие исключения выдаю предупреждения PHP и NULL-результаты. Появление предупреждений можно подавить с помощью префиксирования вызовов методов знаком "@". Следующие API можно использовать для запрашивания и восстановления последней ошибки:

  • Решение проблемы перегрузки в общем является большой проблемой из-за различий в типах между двумя языками. PHP-расширение Java реализует простую, но довольно эффективную метрику для определения того, какая перегрузка подходит более всего.

    Кроме того, имена методов в PHP не чувствительны к регистру символов, потенциально увеличивая количество перегрузок, из которых делается выборка.

    После выбора метода выполняется если необходимо, приведение параметров, возможно, с потерей данных (пример: числа двойной точности с плавающей точкой будут конвертированы в boolean).

  • По традиции в PHP массивы и хэш-таблицы могут взаимозаменяться. Обратите внимание, что хэш-таблицы в PHP могут индексироваться только целыми числами или строками, и что массивы примитивных типов Java не могут быть рассеяны/sparse. Также заметьте, что эти конструкции передаются по значению, поэтому могут быть затратными в плане памяти и времени.

sapi/servlet построен на механизме, определённом расширением ext/java, что обеспечивает запуск всего процессора PHP как сервлета. Основным преимуществом этого способа, в отличие от PHP, является то, что web-серверы, поддерживающие сервлеты, обычно очень заботятся о пулах и повторном использовании JVM. Инструкции построения для модуля Servlet SAPI можно найти в файле php4/sapi/README.

Примечания:

  • Поскольку предполагается, что этот код должен иметь возможность запуска на любой машине сервлетов, он был протестирован только на Apache'вском Jakarta/tomcat. Мы приветствуем также сообщения о дефектах, успехах и/или патчах, необходимых для работы этого кода на других машинах.

  • PHP имеет привычку менять рабочую директорию. sapi/servlet может вернуть в прежнюю, но, пока PHP работает, машина сервлетов не сможет загрузить какие-либо классы из CLASSPATH, которые специфицированы с использованием относительного синтаксиса директорий, или найти рабочую директорию, используемую для задач администрирования и компиляции JSP.

Содержание

 
java_last_exception_clear - очищает последнее Java-исключение
java_last_exception_get - получает последнее Java-исключение
 
 
 Функции по алфавиту 
   Содержание   
 Функции по категориям 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS