Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Свои extensions в PHP, Как реализовать это средствами Delphi 7? 
:(
    Опции темы
Хрипа
Дата 29.2.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Документация 
Желательно исходники!
Компонеты
Спасибо!
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
flashaa
Дата 29.2.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Думаю можно, в Делфи ведь делаются DLL - библиотеки. Полагаю, написать функции, запихать в DLL. Подключить полученный DLL как расширение extension=my.dll. Потом функции из dll-ки должны стать доступны в PHP. Только вот DLL-должна быть написана с ориентировкой на PHP. Как именно - не знаю. Да, и работать будет только под виндой, соответственно.

Это сообщение отредактировал(а) flashaa - 29.2.2008, 18:27
PM MAIL   Вверх
mishaSL
Дата 29.2.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Вот пример на C под Unix:
Код

/* включить/include стандартный header */



#include <php.h>
#include <file.h>
#include "my_pcre.c"


#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>



#include "url.h"
#ifdef _OSD_POSIX
#ifndef APACHE
#error On this EBCDIC platform, PHP is only supported as an Apache module.
#else /*APACHE*/
#ifndef CHARSET_EBCDIC
#define CHARSET_EBCDIC /* this machine uses EBCDIC, not ASCII! */
#endif
#include "ebcdic.h"
#endif /*APACHE*/
#endif /*_OSD_POSIX*/
static char hexchars[] = "0123456789abcdef";
static char HEXCHARS[] = "0123456789ABCDEF";

//#include <stdio.h>

/* объявление экспортируемой функции */
ZEND_FUNCTION(f1);

/* скомпилированный список функций, так что Zend знает, что находится в этом модуле */
zend_function_entry mod1_functions[] =
{
    ZEND_FE(f1, NULL)
    {NULL, NULL, NULL}
};

/* скомпилированная информация модуля */
zend_module_entry mod1_module_entry =
{
    STANDARD_MODULE_HEADER,
    "Module 1",
    mod1_functions,
    NULL, NULL, NULL, NULL, NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
};

/* реализуется стандартная "заглушка/stub" для введения в Zend */
#if COMPILE_DL_MOD1
ZEND_GET_MODULE(mod1)
#endif





PHPAPI char *php_url_encode(char const *s, int len, int *new_length)
{
    register unsigned char c;
    unsigned char *to, *start;
    unsigned char const *from, *end;
    
    from = s;
    end = s + len;
    start = to = (unsigned char *) safe_emalloc(3, len, 1);

    while (from < end) {
        c = *from++;

        if (c == ' ') {
            *to++ = '+';
#ifndef CHARSET_EBCDIC
        } else if ((c < '0' && c != '-' && c != '.') ||
                   (c < 'A' && c > '9') ||
                   (c > 'Z' && c < 'a' && c != '_') ||
                   (c > 'z')) {
            to[0] = '%';
            to[1] = hexchars[c >> 4];
            to[2] = hexchars[c & 15];
            to += 3;
#else /*CHARSET_EBCDIC*/
        } else if (!isalnum(c) && strchr("_-.", c) == NULL) {
            /* Allow only alphanumeric chars and '_', '-', '.'; escape the rest */
            to[0] = '%';
            to[1] = hexchars[os_toascii[c] >> 4];
            to[2] = hexchars[os_toascii[c] & 15];
            to += 3;
#endif /*CHARSET_EBCDIC*/
        } else {
            *to++ = c;
        }
    }
    *to = 0;
    if (new_length) {
        *new_length = to - start;
    }
    return (char *) start;
}

char *url_encode(char *in_str)
{
    
    int in_str_len,out_str_len;
    in_str_len=strlen(in_str);
    

    return php_url_encode(in_str, in_str_len, &out_str_len);
    
}


char *file_get_contents(char *filename)
{
/* Реализация функции */
    
}
int main_func(long search_type,long max_pages,char *site,char *word, char match[])
{
/* Реализация функции */
}


/* реализуется функция, которая должна стать доступной для PHP */
ZEND_FUNCTION(f1)
{
    int p1,p2;
    int position;
    long search_type,max_pages;
    int i,j,k;
    char res[10];
    char *res_out;
    char match[80];
    char *site;
    char *word;
    
    if (zend_parse_parameters(/*ZEND_NUM_ARGS()*/4 TSRMLS_CC, "llss",&search_type,&max_pages, &site ,&p1,&word,&p2) == FAILURE) {
        return ;
    }
    i=main_func(search_type,max_pages,site, word,  match);
    if (i>0)
         position=atoi(match);
    else    
        position=0;
    RETURN_LONG((long)position );
    
    //RETVAL_STRINGL( res_out,strlen(res_out),0);
}


Искать можно здесь и здесь

Добавлено через 1 минуту и 37 секунд
Странно раньше на php.net еще статья была, сейчас что-то найти не могу...


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Хрипа
Дата 29.2.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



mishaSL, Спасибо но в данном случаи интересует Win32 платформа )
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
FractalizeR
Дата 8.3.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



А вот как писать расширения на Delphi: http://users.telenet.be/ws36637/php4delphi.html


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0689 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.