From 44ab99fddb154aa6858fd0428ce1b8357141c760 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Thu, 7 Mar 2019 19:01:34 +0200 Subject: [PATCH 01/35] Small changes --- Source/PHPFunctions.pas | 6 ++++-- Source/ZENDAPI.pas | 2 +- Source/php4delphi.pas | 5 +++-- Source/phpClass.pas | 5 +++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index 4f192ae..d8071cf 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -19,7 +19,9 @@ interface uses - Windows, SysUtils, Classes, {$IFDEF VERSION6} Variants, + Windows, SysUtils, Classes, + {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} + {$IFDEF VERSION6} Variants, {$ENDIF} ZendTypes, PHPTypes, ZendAPI, PHPAPI ; type @@ -321,7 +323,7 @@ procedure TPHPFunction.SetDisplayName(const Value: string); ({$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(NameValue, F.FunctionName) = 0) then raise Exception.CreateFmt('Duplicate function name: %s', [Value]); end; - FFunctionName := {$IFDEF PHP_UNICE}LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(Value); + FFunctionName := {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(Value); Changed(False); end; end; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index e3d9c45..5b36e8d 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -3439,7 +3439,7 @@ function Z_VARREC(z: pzval): TVarRec; Move(z.value.str.val^, P[1], z.value.str.len); {$IFDEF PHP_UNICE} - Result.VString := Pointer(String(p)); + Result.VUnicodeString := Pointer(p); {$ELSE} Result.VAnsiString := Pointer(P); {$ENDIF} diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 1d19cbb..13baa1c 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -40,6 +40,7 @@ interface PHPCommon, WinApi.WinSock, ZendTypes, PHPTypes, PHPAPI, ZENDAPI, DelphiFunctions, phpFunctions, strUtils, varUtils, + {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} {$IFDEF soulengine_build} VCL.Dialogs, {$ENDIF} System.UITypes; @@ -1765,7 +1766,7 @@ procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); for cnt := 0 to ALib.Functions.Count - 1 do begin FN := - {$IFDEF PHP_UNICE}LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} (ALib.Functions[cnt].FunctionName); if FHash.IndexOf(FN) > -1 then begin @@ -1778,7 +1779,7 @@ procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); begin for cnt := 0 to ALib.Functions.Count - 1 do begin - FN := {$IFDEF PHP_UNICE}LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + FN := {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} (ALib.Functions[cnt].FunctionName); FHash.AddObject(FN, ALib.Functions[cnt]); end; diff --git a/Source/phpClass.pas b/Source/phpClass.pas index 12e035d..a684840 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -18,6 +18,7 @@ interface uses Windows, SysUtils, Classes, PHPCommon, + {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} ZendTypes, ZendAPI, phpTypes, PHPAPI, phpFunctions; @@ -807,7 +808,7 @@ procedure TPHPClass.ProduceInstance(AValue: pzval); procedure TPHPClass.SetClassName(const Value: zend_ustr); begin - FClassName := LowerCase(Value); + FClassName := {$IFDEF PHP_UNICE}UTF8LowerCase(Value){$ELSE}LowerCase(Value){$ENDIF}; end; procedure TPHPClass.SetMethods(const Value: TPHPClassmethods); @@ -1133,7 +1134,7 @@ procedure TPHPClassMethod.SetDisplayName(const Value: string); ({$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0) then raise Exception.Create('Duplicate method name'); end; - FName := LowerCase(Value); + FName := {$IFDEF PHP_UNICE}LowerCase(Value){$ELSE}AnsiLowerCase(Value){$ENDIF}; Changed(False); end; end; From 28036a7430837db19176affacb8656ba74562c1f Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sat, 9 Mar 2019 18:19:46 +0200 Subject: [PATCH 02/35] some small changes --- PHP4DELPHI.HLP => Documentation/PHP4DELPHI.HLP | Bin php4delphi.chm => Documentation/php4delphi.chm | Bin php4delphi.chw => Documentation/php4delphi.chw | Bin php4delphi.cnt => Documentation/php4delphi.cnt | 0 Source/DelphiFunctions.pas | 4 ++-- 5 files changed, 2 insertions(+), 2 deletions(-) rename PHP4DELPHI.HLP => Documentation/PHP4DELPHI.HLP (100%) rename php4delphi.chm => Documentation/php4delphi.chm (100%) rename php4delphi.chw => Documentation/php4delphi.chw (100%) rename php4delphi.cnt => Documentation/php4delphi.cnt (100%) diff --git a/PHP4DELPHI.HLP b/Documentation/PHP4DELPHI.HLP similarity index 100% rename from PHP4DELPHI.HLP rename to Documentation/PHP4DELPHI.HLP diff --git a/php4delphi.chm b/Documentation/php4delphi.chm similarity index 100% rename from php4delphi.chm rename to Documentation/php4delphi.chm diff --git a/php4delphi.chw b/Documentation/php4delphi.chw similarity index 100% rename from php4delphi.chw rename to Documentation/php4delphi.chw diff --git a/php4delphi.cnt b/Documentation/php4delphi.cnt similarity index 100% rename from php4delphi.cnt rename to Documentation/php4delphi.cnt diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index c5f24e3..3334287 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -479,7 +479,7 @@ procedure delphi_get_property_handler(val : pzval; property_reference : PZend_pr end; - +{$IFDEF PHP4} procedure _delphi_get_property_wrapper; assembler; asm push ebp @@ -518,7 +518,7 @@ procedure _delphi_get_property_wrapper; assembler; pop ebp ret end; - +{$ENDIF} procedure delphi_call_function(ht : integer; return_value : pzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer; property_reference : Pzend_property_reference ); cdecl; From 1d7313ccfa8d3265bac0924127c5cbeabc7abd75 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Wed, 13 Mar 2019 13:11:55 +0200 Subject: [PATCH 03/35] Some L/D changes --- Source/PHPProjectWizard.pas | 2 +- Source/PHPTypes.pas | 12 ++++++------ Source/ZENDAPI.pas | 4 ++-- Source/ZendTypes.pas | 2 +- Source/php4DelphiD2010.dproj | 22 +++++++++++----------- Source/php4DelphiD2010.identcache | Bin 1252 -> 1252 bytes Source/php4DelphiD2010.stat | 6 +++--- Source/php4DelphiR2010.identcache | Bin 856 -> 856 bytes Source/php4DelphiR2010.stat | 6 +++--- Source/php4delphi.pas | 9 ++++----- Source/phpModules.pas | 4 +++- Source/phpWeb.pas | 2 +- Source/zend_dynamic_array.pas | 2 +- 13 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Source/PHPProjectWizard.pas b/Source/PHPProjectWizard.pas index 49edc4a..37f4fac 100644 --- a/Source/PHPProjectWizard.pas +++ b/Source/PHPProjectWizard.pas @@ -16,7 +16,7 @@ interface uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + {$IFNDEF FPC} Windows, {$ELSE} LCLType,LCLIntf,dynlibs,libc,{$ENDIF} Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ToolsAPI, {$IFDEF VERSION6} DesignIntf, diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 5dbbbc6..0f788f4 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -16,7 +16,7 @@ interface uses - Windows, ZENDTypes; + {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, ZENDTypes; {$IFDEF PHP4} const @@ -254,8 +254,8 @@ interface sapi_module_struct = record - name : zend_pchar; - pretty_name : zend_pchar; + name : PAnsiChar; + pretty_name : PAnsiChar; startup : TModuleStartupFunc; //int (*startup)(struct _sapi_module_struct *sapi_module); @@ -288,14 +288,14 @@ interface get_request_time : pointer; terminate_process : pointer; - php_ini_path_override : zend_pchar; + php_ini_path_override : PAnsiChar; block_interruptions : pointer; unblock_interruptions : pointer; default_post_reader : pointer; treat_data : pointer; - executable_location : zend_pchar; + executable_location : PAnsiChar; php_ini_ignore : Integer; @@ -313,7 +313,7 @@ interface phpinfo_as_text : integer; - ini_entries : zend_pchar; + ini_entries : PAnsiChar; additional_functions: Pointer; input_filter_init : Pointer; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 5b36e8d..e614614 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -20,7 +20,7 @@ interface uses - Windows, SysUtils, + {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, SysUtils, ZendTypes, Variants, PHPTypes; type @@ -556,7 +556,7 @@ procedure dispose_pzval_array(Params: pzval_array); var _zend_bailout : procedure (filename : zend_pchar; lineno : uint); cdecl; - zend_alter_ini_entry : function(name: zend_pchar; name_length: uint; new_value: zend_pchar; new_value_length: uint; modify_type: Integer; stage: Integer): Integer; cdecl; + zend_alter_ini_entry : function(name: PAnsiChar; name_length: uint; new_value: PAnsiChar; new_value_length: uint; modify_type: Integer; stage: Integer): Integer; cdecl; zend_alter_ini_entry_ex : function(name: zend_pchar; name_length: uint; new_value: zend_pchar; new_value_length: uint; modify_type: Integer; stage: Integer; force_change: integer): Integer; cdecl; zend_restore_ini_entry : function(name: zend_pchar; name_length: uint; stage: Integer): Integer; cdecl; diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 9c2b874..a0d2a8e 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -16,7 +16,7 @@ interface uses - Windows, SysUtils; + {$IFNDEF FPC} Windows {$ELSE} LCLType{$ENDIF}, SysUtils; const //zend.h diff --git a/Source/php4DelphiD2010.dproj b/Source/php4DelphiD2010.dproj index d0ed8de..e8ebf40 100644 --- a/Source/php4DelphiD2010.dproj +++ b/Source/php4DelphiD2010.dproj @@ -136,7 +136,16 @@ True - + + + 0 + .dll;.bpl + + + 1 + .dylib + + Contents\Resources @@ -475,16 +484,7 @@ 1 - - - 0 - .dll;.bpl - - - 1 - .dylib - - + diff --git a/Source/php4DelphiD2010.identcache b/Source/php4DelphiD2010.identcache index cb3dd3fa670e67cd3d46bc4ae7aae2ee3727c99a..a7374d782c74209272df63f52365e47f88bf526f 100644 GIT binary patch delta 70 zcmaFD`Gj-A$H{+~eJA%Z`T?=|1wkjb-H Wynx~+lT{fdCf{N71+smB@__)O%NLgb delta 78 zcmaFD`Gj-A$I0uMeJ1Z`vYUL7MR>9uqu=CT%)UU{eDYyNaiE;ZT5~w$DatgB-0Fz@I8UO$Q diff --git a/Source/php4DelphiD2010.stat b/Source/php4DelphiD2010.stat index 1d4bad9..04476ee 100644 --- a/Source/php4DelphiD2010.stat +++ b/Source/php4DelphiD2010.stat @@ -1,9 +1,9 @@ [Stats] -EditorSecs=287 +EditorSecs=235 DesignerSecs=1 InspectorSecs=1 -CompileSecs=15416 -OtherSecs=107 +CompileSecs=43212 +OtherSecs=247 StartTime=04.03.2019 21:55:53 RealKeys=0 EffectiveKeys=0 diff --git a/Source/php4DelphiR2010.identcache b/Source/php4DelphiR2010.identcache index 827b7ad5a3029367083fb6c86853e7d397fec07f..25b123d6abd31477238e8c3faaf37e88fbec9675 100644 GIT binary patch delta 45 zcmcb?c7tug?aAMmBqpmfnNQYYOa;<@llvLHCocDye2dW+h)pK1WRjfB$Ls|Fl`jx~ delta 49 zcmcb?c7tug?a47r5|jHG%_nOyrcS=g=smfF$rs4?1JWjwzcNWq)?hN3cw1sJAF~$# D(mD}z diff --git a/Source/php4DelphiR2010.stat b/Source/php4DelphiR2010.stat index a623f2e..02de922 100644 --- a/Source/php4DelphiR2010.stat +++ b/Source/php4DelphiR2010.stat @@ -1,9 +1,9 @@ [Stats] -EditorSecs=3026 +EditorSecs=4128 DesignerSecs=1 InspectorSecs=3 -CompileSecs=87688 -OtherSecs=331 +CompileSecs=112868 +OtherSecs=370 StartTime=29.07.4016 22:02:01 RealKeys=0 EffectiveKeys=0 diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 13baa1c..fb42abc 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -197,7 +197,7 @@ TCustomPHPLibrary = class(TPHPComponent) TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) private - FINIPath : zend_ustr; + FINIPath : AnsiString; FOnEngineStartup : TNotifyEvent; FOnEngineShutdown : TNotifyEvent; FEngineActive : boolean; @@ -261,7 +261,7 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) property OnEngineShutdown : TNotifyEvent read FOnEngineShutdown write FOnEngineShutdown; property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; - property IniPath : zend_ustr read FIniPath write FIniPath; + property IniPath : AnsiString read FIniPath write FIniPath; {$IFNDEF PHP540} property SafeMode : boolean read FSafeMode write FSafeMode default false; property SafeModeGid : boolean read FSafeModeGid write FSafeModeGid default false; @@ -1617,8 +1617,7 @@ procedure TPHPEngine.PrepareIniEntry; zend_alter_ini_entry('html_errors', 12, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); zend_alter_ini_entry('implicit_flush', 15, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); - - TimeStr := IntToStr(FMaxInputTime); + TimeStr := IntToStr(FMaxInputTime); zend_alter_ini_entry('max_input_time', 15, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); end; @@ -1643,7 +1642,7 @@ procedure TPHPEngine.PrepareEngine; delphi_sapi_module.register_server_variables := @php_delphi_register_variables; delphi_sapi_module.log_message := @php_delphi_log_message; if FIniPath <> '' then - delphi_sapi_module.php_ini_path_override := zend_pchar(FIniPath) + delphi_sapi_module.php_ini_path_override := PAnsiChar(FIniPath) else delphi_sapi_module.php_ini_path_override := nil; delphi_sapi_module.block_interruptions := nil; diff --git a/Source/phpModules.pas b/Source/phpModules.pas index d7397a8..9943c82 100644 --- a/Source/phpModules.pas +++ b/Source/phpModules.pas @@ -16,7 +16,7 @@ interface uses - SyncObjs, Windows, SysUtils, Types, Classes, VCL.Forms, VCL.Consts, + SyncObjs, {$IFNDEF FPC} Windows, {$ELSE} LCLType,LCLIntf,dynlibs,LCLProc,{$ENDIF} SysUtils, Types, Classes, VCL.Forms, VCL.Consts, PHPCommon, {$IFDEF VERSION6}RTLConsts, Variants,{$ENDIF} ZendAPI, phpAPI, phpFunctions, @@ -464,7 +464,9 @@ procedure DoneVCLApplication; begin try VCL.Forms.Application.OnException := nil; + {$IFDEF WINDOWS} if VCL.Forms.Application.Handle <> 0 then ShowOwnedPopups(VCL.Forms.Application.Handle, False); + {$ELSE} VCL.Forms.Application.ShowHint := False; VCL.Forms.Application.Destroying; VCL.Forms.Application.DestroyComponents; diff --git a/Source/phpWeb.pas b/Source/phpWeb.pas index 52ce78d..ac4ab48 100644 --- a/Source/phpWeb.pas +++ b/Source/phpWeb.pas @@ -16,7 +16,7 @@ interface uses - Windows, ToolsAPI, Forms, Dialogs, SysUtils, Graphics, Classes, ShellAPI; + {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, ToolsAPI, Forms, Dialogs, SysUtils, Graphics, Classes, ShellAPI; type TphpWebWizard = class(TNotifierObject, IOTAWIzard, IOTAMenuWizard) diff --git a/Source/zend_dynamic_array.pas b/Source/zend_dynamic_array.pas index e58c4d8..99eec4d 100644 --- a/Source/zend_dynamic_array.pas +++ b/Source/zend_dynamic_array.pas @@ -15,7 +15,7 @@ interface uses - Windows, SysUtils, ZENDTypes; + SysUtils, ZENDTypes; type From 7fc2d877f1bb0e33685166a5997f2033e145423e Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sun, 17 Mar 2019 16:54:27 +0200 Subject: [PATCH 04/35] Update PHP.INC --- Source/PHP.INC | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/PHP.INC b/Source/PHP.INC index 73c7da3..3135465 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -70,7 +70,7 @@ backward compatibility between PHP versions. {$DEFINE PHP530} {$DEFINE PHP540} {$DEFINE PHP550} - {$DEFINE PHP_UNICE} + {//$DEFINE PHP_UNICE} {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} @@ -213,3 +213,7 @@ backward compatibility between PHP versions. {$J+} {$WARNINGS OFF} {$ENDIF} + +{$IFDEF MSWINDOWS} +{$DEFINE WINDOWS} +{$ENDIF} From a94056c10f257c638e752b88e9c55fec53c4b70e Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sun, 17 Mar 2019 16:57:06 +0200 Subject: [PATCH 05/35] Update ZendTypes.pas --- Source/ZendTypes.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index a0d2a8e..0053b9f 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -7,7 +7,7 @@ { serge_perevoznyk@hotmail.com } { http://users.telenet.be/ws36637 } {*******************************************************} -{$I 'PHP.inc'} +{$I PHP.inc} { $Id: ZendTypes.pas,v 7.4 10/2009 delphi32 Exp $ } From 007b9704b62a07018a00854c5a44a8eb65097aa7 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Tue, 21 May 2019 14:18:05 +0300 Subject: [PATCH 06/35] Small changes --- Source/ConverterBackup/php4DelphiR2010.dpk | 50 +++++++++++++++++++ .../Delphi Class 2/delphi_class2.dpr | 2 +- .../Extensions/skeleton/skeleton.dpr | 2 +- Source/Demos/Delphi4PHP/DesignIDE/d4pide.dpr | 2 +- .../Delphi Class 2/delphi_class2.dpr | 2 +- Source/Demos/Extensions/skeleton/skeleton.dpr | 2 +- Source/PHPProjectWizard.pas | 2 +- Source/ZendTypes.pas | 2 +- Source/php4DelphiR2010.lpk | 32 ++++++++++++ 9 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 Source/ConverterBackup/php4DelphiR2010.dpk create mode 100644 Source/php4DelphiR2010.lpk diff --git a/Source/ConverterBackup/php4DelphiR2010.dpk b/Source/ConverterBackup/php4DelphiR2010.dpk new file mode 100644 index 0000000..8ffc056 --- /dev/null +++ b/Source/ConverterBackup/php4DelphiR2010.dpk @@ -0,0 +1,50 @@ +package php4DelphiR2010; + +{$R *.res} +{$R 'php4delphi.dcr'} +{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DEFINE DEBUG} +{$ENDIF IMPLICITBUILDING} +{$DESCRIPTION 'php4Delphi (run-rime)'} +{$RUNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl; + +contains + ZENDAPI in 'ZENDAPI.pas', + DelphiFunctions in 'DelphiFunctions.pas', + php4delphi in 'php4delphi.pas', + PHPAPI in 'PHPAPI.pas', + phpModules in 'phpModules.pas', + PHPLibrary in 'PHPLibrary.pas', + PHPFunctions in 'PHPFunctions.pas', + PHPTypes in 'PHPTypes.pas', + ZENDTypes in 'ZENDTypes.pas', + phpClass in 'phpClass.pas', + PHPCommon in 'PHPCommon.pas'; + +end. diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr index b487c8b..1035333 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr @@ -7,7 +7,7 @@ { http://users.telenet.be/ws36637 } {*******************************************************} -{$I php.inc} +{$I PHP.INC} library delphi_class2; diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr index b768421..db76d9f 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr @@ -9,7 +9,7 @@ { $Id: skeleton.dpr,v 7.4 10/2009 delphi32 Exp $ } -{$I php.inc} +{$I PHP.INC} library skeleton; diff --git a/Source/Demos/Delphi4PHP/DesignIDE/d4pide.dpr b/Source/Demos/Delphi4PHP/DesignIDE/d4pide.dpr index f8afdd2..aedcde9 100644 --- a/Source/Demos/Delphi4PHP/DesignIDE/d4pide.dpr +++ b/Source/Demos/Delphi4PHP/DesignIDE/d4pide.dpr @@ -7,7 +7,7 @@ { http://users.chello.be/ws36637 } {*******************************************************} -{$I php.inc} +{$I PHP.INC} library d4pide; diff --git a/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr b/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr index bc1d2d8..6972d25 100644 --- a/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr +++ b/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr @@ -7,7 +7,7 @@ { http://users.chello.be/ws36637 } {*******************************************************} -{$I php.inc} +{$I PHP.INC} library delphi_class2; diff --git a/Source/Demos/Extensions/skeleton/skeleton.dpr b/Source/Demos/Extensions/skeleton/skeleton.dpr index b2c3c91..e951a0c 100644 --- a/Source/Demos/Extensions/skeleton/skeleton.dpr +++ b/Source/Demos/Extensions/skeleton/skeleton.dpr @@ -10,7 +10,7 @@ { $Id: skeleton.dpr,v 7.4 10/2009 delphi32 Exp $ } -{$I php.inc} +{$I PHP.INC} library skeleton; diff --git a/Source/PHPProjectWizard.pas b/Source/PHPProjectWizard.pas index 37f4fac..4a281d1 100644 --- a/Source/PHPProjectWizard.pas +++ b/Source/PHPProjectWizard.pas @@ -10,7 +10,7 @@ {$I PHP.INC} { $Id: PHPProjectWizard.pas,v 7.4 10/2009 delphi32 Exp $ } -{$I PHP.inc} + unit PHPProjectWizard; interface diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 0053b9f..ae23209 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -7,7 +7,7 @@ { serge_perevoznyk@hotmail.com } { http://users.telenet.be/ws36637 } {*******************************************************} -{$I PHP.inc} +{$I PHP.INC} { $Id: ZendTypes.pas,v 7.4 10/2009 delphi32 Exp $ } diff --git a/Source/php4DelphiR2010.lpk b/Source/php4DelphiR2010.lpk new file mode 100644 index 0000000..15061d0 --- /dev/null +++ b/Source/php4DelphiR2010.lpk @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9814ac6ce79303e8a394095766068a548dc49ff0 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sun, 26 May 2019 19:30:50 +0300 Subject: [PATCH 07/35] Some php7+ compat steps --- Source/AutomaticConversion.log | 1 + Source/DelphiFunctions.pas | 24 +- Source/PHP.INC | 14 +- Source/PHPAPI.pas | 24 +- Source/PHPFunctions.pas | 50 +- Source/PHPTypes.pas | 6 +- Source/ZENDAPI.pas | 770 +++++--- Source/ZendTypes.pas | 182 +- Source/hzend_types.pas | 3024 ++++++++++++++++++++++++++++++++ Source/php4delphi.pas | 20 +- 10 files changed, 3685 insertions(+), 430 deletions(-) create mode 100644 Source/AutomaticConversion.log create mode 100644 Source/hzend_types.pas diff --git a/Source/AutomaticConversion.log b/Source/AutomaticConversion.log new file mode 100644 index 0000000..e660758 --- /dev/null +++ b/Source/AutomaticConversion.log @@ -0,0 +1 @@ + Fatal: Перетворення перервано. diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 3334287..03283df 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -17,7 +17,7 @@ interface uses SysUtils, Classes, Controls, - ZendTypes, ZendAPI, PHPTypes, PHPAPI, Dialogs, typinfo, + {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} ZendAPI, PHPTypes, PHPAPI, Dialogs, typinfo, Forms, stdctrls; {$ifdef fpc} @@ -29,14 +29,17 @@ interface author_class_entry : Tzend_class_entry; delphi_object_entry : TZend_class_entry; - object_functions : array[0..2] of zend_function_entry; - author_functions : array[0..2] of zend_function_entry; + object_functions : {$IFDEF PHP7}HashTable{$ELSE}array[0..2] of zend_function_entry{$ENDIF}; + author_functions : {$IFDEF PHP7}HashTable{$ELSE}array[0..2] of zend_function_entry{$ENDIF}; DelphiObject : pzend_class_entry; ce : pzend_class_entry; - - {$IFDEF PHP5} - DelphiObjectHandlers : zend_object_handlers; + {$IFDEF PHP7} + DelphiObjectHandlers : _zend_object_handlers; + {$ELSE} + {$IFDEF PHP5} + DelphiObjectHandlers : zend_object_handlers; + {$ENDIF} {$ENDIF} @@ -597,7 +600,7 @@ function delphi_call_method(method : zend_pchar; ht : integer; return_value : pz end; -function delphi_get_method(_object : pzval; method_name : zend_pchar; method_len : integer; TSRMLS_DC : pointer) : PzendFunction; cdecl; +function delphi_get_method(_object : pzval; method_name : zend_pchar; method_len : integer; TSRMLS_DC : pointer) : {$IFDEF PHP7}P_zend_function{$ELSE}PzendFunction{$ENDIF}; cdecl; begin @@ -688,6 +691,9 @@ procedure register_delphi_component(ht : integer; return_value : pzval; this_ptr procedure RegisterInternalClasses(p : pointer); begin + {$IFDEF PHP7} + object_functions + {$ELSE} object_functions[0].fname := 'delphi_classname'; object_functions[0].handler := @delphi_object_classname; @@ -698,13 +704,13 @@ procedure RegisterInternalClasses(p : pointer); object_functions[2].handler := nil; INIT_CLASS_ENTRY(delphi_object_entry, 'delphi_class' , @object_functions); - + {$ENDIF} {$IFDEF PHP4} Delphi_Object_Entry.handle_property_get := @_delphi_get_property_wrapper; Delphi_Object_Entry.handle_property_set := @delphi_set_property_handler; Delphi_Object_Entry.handle_function_call := @delphi_call_function; {$ELSE} - Move(zend_get_std_object_handlers()^, DelphiObjectHandlers, sizeof(zend_object_handlers)); + Move(zend_get_std_object_handlers()^, DelphiObjectHandlers, sizeof({$IFDEF PHP7}_zend_object_handlers{$ELSE}zend_object_handlers{$ENDIF})); DelphiObjectHandlers.read_property := @delphi_get_property_handler; DelphiObjecthandlers.write_property := @delphi_set_property_handler; DelphiObjectHandlers.call_method := @delphi_call_method; diff --git a/Source/PHP.INC b/Source/PHP.INC index 3135465..12e4bf3 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -19,10 +19,11 @@ If you are using PHP version 5.1.0 or higher please add $DEFINE PHP510 If you are using PHP version 5.1.1 or higher please add $DEFINE PHP511 If you are using PHP version 5.1.2 or higher please add $DEFINE PHP512 If you are using PHP version 5.2.0 or higher please add $DEFINE PHP520 -IF you are using PHP version 5.3.0 or highre please add $DEFINE PHP530 -IF you are using PHP version 5.4.0 or highre please add $DEFINE PHP540 -IF you are using PHP version 5.5.0 or highre please add $DEFINE PHP550 -IF you are using PHP version 5.6.0 or highre please add $DEFINE PHP560 +IF you are using PHP version 5.3.0 or higher please add $DEFINE PHP530 +IF you are using PHP version 5.4.0 or higher please add $DEFINE PHP540 +IF you are using PHP version 5.5.0 or higher please add $DEFINE PHP550 +IF you are using PHP version 5.6.0 or higher please add $DEFINE PHP560 +IF you are using PHP cersion 7.0.0 or higher please add $DEFINE PHP700 If you are using PHP compiled via: id, define compiler_id VC9 COMPILER_VC9 @@ -57,14 +58,17 @@ backward compatibility between PHP versions. {$DEFINE PHP540} {$DEFINE PHP550} {$DEFINE PHP560} - {$IFDEF PHP530} {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} +{..$DEFINE soulengine_build} +{..$DEFINE PHP7} +{..$DEFINE P_CUT} {$IFDEF PHP7} {$DEFINE COMPILER_VC14} {$DEFINE PHP560} + {$DEFINE PHP700} {$ENDIF} {$IFDEF PHP560} {$DEFINE PHP530} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index bc220cd..1a05ab5 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -29,7 +29,9 @@ interface Windows {$ENDIF}, - ZendTypes, PHPTypes, zendAPI, + ZendTypes, + {$IFDEF PHP7} hzend_types,{$ENDIF} + PHPTypes, zendAPI, {$IFDEF VERSION6}Variants{$ENDIF}{WinSock}; @@ -127,7 +129,7 @@ interface function GetSymbolsTable : PHashTable; -function GetTrackHash(Name : zend_ustr) : PHashTable; +function GetTrackHash(Name : zend_ustr) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; function GetSAPIGlobals : Psapi_globals_struct; overload; function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; //procedure phperror(Error : zend_pchar); @@ -174,9 +176,9 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; - +{$IFNDEF P_CUT} php_log_err: procedure (err_msg : zend_pchar; TSRMLS_DC : pointer); cdecl; - +{$ENDIF} php_html_puts: procedure (str : zend_pchar; str_len : integer; TSRMLS_DC : pointer); cdecl; _php_error_log: function (opt_err : integer; msg : zend_pchar; opt: zend_pchar; headers: zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; @@ -357,10 +359,10 @@ function GetSymbolsTable : PHashTable; {$ENDIF} -function GetTrackHash(Name : zend_ustr) : PHashTable; +function GetTrackHash(Name : zend_ustr) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var data : ^ppzval; - arr : PHashTable; + arr : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; ret : integer; begin Result := nil; @@ -375,7 +377,7 @@ function GetTrackHash(Name : zend_ustr) : PHashTable; ret := zend_hash_find(arr, zend_pchar(Name), Length(Name)+1, Data); if ret = SUCCESS then begin - Result := data^^^.value.ht; + Result := {$IFDEF PHP7}data^^^.value.arr{$ELSE}data^^^.value.ht{$ENDIF}; end; end; end; @@ -427,7 +429,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; function zval2variant(value : zval) : variant; begin - case Value._type of + case {$IFDEF PHP7}Value.u1.v._type{$ELSE}Value._type{$ENDIF} of IS_NULL : Result := NULL; IS_LONG : Result := Value.value.lval; IS_DOUBLE : Result := Value.value.dval; @@ -756,9 +758,9 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; php_body_write := GetProcAddress(PHPLib, 'php_body_write'); php_header_write := GetProcAddress(PHPLib, 'php_header_write'); - + {$IFNDEF P_CUT} php_log_err := GetProcAddress(PHPLib, 'php_log_err'); - + {$ENDIF} php_html_puts := GetProcAddress(PHPLib, 'php_html_puts'); _php_error_log := GetProcAddress(PHPLib, '_php_error_log'); @@ -845,7 +847,9 @@ procedure CheckPHPErrors; if @php_register_variable_safe = nil then raise EPHP4DelphiException.Create('php_register_variable_safe'); if @php_register_variable_ex = nil then raise EPHP4DelphiException.Create('php_register_variable_ex'); if @php_strip_tags = nil then raise EPHP4DelphiException.Create('php_strip_tags'); + {$IFNDEF P_CUT} if @php_log_err = nil then raise EPHP4DelphiException.Create('php_log_err'); + {$ENDIF} if @php_html_puts = nil then raise EPHP4DelphiException.Create('php_html_puts'); if @_php_error_log = nil then raise EPHP4DelphiException.Create('_php_error_log'); if @php_print_credits = nil then raise EPHP4DelphiException.Create('php_print_credits'); diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index d8071cf..bf35afa 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -22,7 +22,9 @@ interface Windows, SysUtils, Classes, {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} {$IFDEF VERSION6} Variants, - {$ENDIF} ZendTypes, PHPTypes, ZendAPI, PHPAPI ; + {$ENDIF} + {$IFDEF PHP7} hzend_types, {$ENDIF} + ZendTypes, PHPTypes, ZendAPI, PHPAPI ; type TParamType = (tpString, tpInteger, tpFloat, tpBoolean, tpArray, tpUnknown); @@ -175,7 +177,7 @@ function IsParamTypeCorrect(AParamType : TParamType; z : Pzval) : boolean; var ZType : integer; begin - ZType := Z^._type; + ZType := {$IFDEF PHP7}Z^.u1.v._type{$ELSE} Z^._type{$ENDIF}; case AParamType Of tpString : Result := (ztype in [IS_STRING, IS_NULL]); tpInteger : Result := (ztype in [IS_LONG, IS_BOOL, IS_NULL, IS_RESOURCE]); @@ -389,30 +391,16 @@ procedure TFunctionParams.SetItem(Index: Integer; Value: TFunctionParam); procedure TFunctionParams.SetItemName(Item: TCollectionItem); var I, J: Integer; - ItemName: string; CurItem: TFunctionParam; begin J := 1; - while True do + CurItem := ParamByName('Param1'); + while (CurItem <> nil) and (CurItem <> Item) do begin - ItemName := Format('Param%d', [J]); - I := 0; - while I < Count do - begin - CurItem := Items[I] as TFunctionParam; - if (CurItem <> Item) and (CompareText(CurItem.Name, ItemName) = 0) then - begin - Inc(J); - Break; - end; - Inc(I); - end; - if I >= Count then - begin - (Item as TFunctionParam).Name := ItemName; - Break; - end; + inc(J); + CurItem := ParamByName('Param' + inttostr(J)); end; + (Item as TFunctionParam).Name := 'Param' + inttostr(J); end; function TFunctionParams.Values(AName: string): Variant; @@ -522,7 +510,7 @@ function TZendVariable.GetAsBoolean: boolean; Exit; end; - case FValue^._type of + case{$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : begin if SameText(GetAsString, 'True') then @@ -545,7 +533,7 @@ function TZendVariable.GetAsDate: TDateTime; Exit; end; - case FValue^._type of + case{$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : Result := StrToDate(GetAsString); IS_DOUBLE : Result := FValue^.value.dval; else @@ -561,7 +549,7 @@ function TZendVariable.GetAsDateTime: TDateTime; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : Result := StrToDateTime(GetAsString); IS_DOUBLE : Result := FValue^.value.dval; else @@ -585,7 +573,7 @@ function TZendVariable.GetAsFloat: double; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : Result := StrToFloatDef(GetAsString,0.0); IS_DOUBLE : Result := FValue^.value.dval; else @@ -601,7 +589,7 @@ function TZendVariable.GetAsInteger: integer; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : result := StrToIntDef(GetAsString, 0); IS_DOUBLE : result := Round(FValue^.value.dval); IS_NULL : result := 0; @@ -621,7 +609,7 @@ function TZendVariable.GetAsString: zend_ustr; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : begin try SetLength(Result, FValue^.value.str.len); @@ -654,7 +642,7 @@ function TZendVariable.GetAsTime: TDateTime; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_STRING : Result := StrToTime(GetAsString); IS_DOUBLE : Result := FValue^.value.dval; else @@ -681,7 +669,7 @@ function TZendVariable.GetDataType: integer; Exit; end; - Result := FValue^._type; + Result := {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF}; end; function TZendVariable.GetIsNull: boolean; @@ -691,7 +679,7 @@ function TZendVariable.GetIsNull: boolean; Result := true; Exit; end; - Result := FValue^._type = IS_NULL; + Result := {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} = IS_NULL; end; function TZendVariable.GetTypeName: string; @@ -702,7 +690,7 @@ function TZendVariable.GetTypeName: string; Exit; end; - case FValue^._type of + case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_NULL: result := 'null'; IS_LONG: result := 'integer'; IS_DOUBLE: result := 'double'; diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 0f788f4..6b80fd4 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -16,7 +16,7 @@ interface uses - {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, ZENDTypes; + {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7}hzend_types,{$ENDIF} ZENDTypes; {$IFDEF PHP4} const @@ -240,7 +240,7 @@ interface sapi_started : zend_bool; {$IFDEF PHP510} global_request_time : longint; - known_post_content_types : THashTable; + known_post_content_types : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; {$ENDIF} {$ENDIF} end; @@ -387,7 +387,7 @@ interface arg_separator : arg_separators; gpc_order : zend_pchar; variables_order : zend_pchar; - rfc1867_protected_variables : THashTable; + rfc1867_protected_variables : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; connection_status : Smallint; ignore_user_abort : Smallint; header_is_being_sent : Byte; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index e614614..3702676 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -21,6 +21,7 @@ interface uses {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, SysUtils, + {$IFDEF PHP7} hzend_types, {$ENDIF} ZendTypes, Variants, PHPTypes; type @@ -33,7 +34,7 @@ interface PHPWin = {$IFDEF PHP_DEBUG} {$IFDEF PHP7} - 'php7phpdbg.dll' + 'php7ts_debug.dll' {$ELSE} {$IFDEF PHP5} 'php5ts_debug.dll' @@ -144,18 +145,19 @@ function STR_EMPTY_ALLOC : zend_pchar; nKeyLength: uint; pData: Pointer; nDataSize: uint; pDest: Pointer; flag: Integer): Integer; cdecl; {$ELSE} +{$IFNDEF PHP7} var - _zend_hash_add_or_update : function (ht : PHashTable; arKey : zend_pchar; + _zend_hash_add_or_update : function (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDes : pointer; flag : integer; __zend_filename: zend_pchar; __zend_lineno: uint) : integer; cdecl; - - function zend_hash_add_or_update(ht : PHashTable; arKey : zend_pchar; - nKeyLength : uint; pData : pointer; nDataSize : uint; pDes : pointer; +{$ENDIF} + function zend_hash_add_or_update(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; + nKeyLength : uint; pData : {$IFDEF PHP7}pzval{$ELSE}pointer{$ENDIF}; nDataSize : uint; pDes : pointer; flag : integer) : integer; cdecl; {$ENDIF} -function zend_hash_add(ht : PHashTable; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDest : pointer) : integer; cdecl; +function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDest : pointer) : integer; cdecl; var {$IFDEF PHP4} @@ -180,21 +182,25 @@ function zend_hash_add(ht : PHashTable; arKey : zend_pchar; nKeyLength : uint; p {$ELSE} - _zend_hash_init : function (ht : PHashTable; nSize : uint; + _zend_hash_init : function (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent: zend_bool; __zend_filename: zend_pchar; __zend_lineno: uint) : integer; cdecl; - _zend_hash_init_ex : function (ht : PHashTable; nSize : uint; + _zend_hash_init_ex : function (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent : zend_bool; bApplyProtection : zend_bool; __zend_filename: zend_pchar; __zend_lineno: uint): integer; cdecl; - function zend_hash_init (ht : PHashTable; nSize : uint; pHashFunction : pointer; + function zend_hash_init (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent: zend_bool) : integer; cdecl; - function zend_hash_init_ex (ht : PHashTable; nSize : uint; pHashFunction : pointer; + function zend_hash_init_ex (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent : zend_bool; bApplyProtection : zend_bool): integer; cdecl; {$ENDIF} - + {$IFDEF PHP7} + function zend_hash_num_elements(ht: Pzend_array): integer; + function add_char_to_string (_result: Pzval; op1: Pzval; op2: Pzval): Integer; + function add_string_to_string(_result: Pzval; op1: Pzval; op2: Pzval): Integer; + {$ENDIF} var zend_hash_destroy : procedure(ht: PHashTable); cdecl; zend_hash_clean : procedure(ht: PHashTable); cdecl; @@ -226,77 +232,85 @@ function zend_hash_add(ht : PHashTable; arKey : zend_pchar; nKeyLength : uint; p * the standard apply functions do. } - zend_hash_reverse_apply : procedure(ht: PHashTable; + zend_hash_reverse_apply : procedure(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; apply_func: pointer; TSRMLS_DC: Pointer); cdecl; { Deletes } - zend_hash_del_key_or_index : function(ht: PHashTable; arKey: zend_pchar; + {$IFDEF PHP7} + zend_hash_del_key_or_index : function(ht: Pzend_array; key:Pzend_string):longint; cdecl; + {$ELSE} + zend_hash_del_key_or_index : function(ht: PHashTable; arKey: zend_pchar; nKeyLength: uint; h: ulong; flag: Integer): Integer; cdecl; - - zend_get_hash_value : function(ht: PHashTable; arKey: zend_pchar; + {$ENDIF} + zend_get_hash_value : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint): Longint; cdecl; { Data retreival } - zend_hash_find : function(ht: PHashTable; arKey: zend_pchar; nKeyLength: uint; + zend_hash_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint; pData: Pointer): Integer; cdecl; - zend_hash_quick_find : function(ht: PHashTable; arKey: zend_pchar; + zend_hash_quick_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint; h: ulong; pData: Pointer): Integer; cdecl; - zend_hash_index_find : function(ht: PHashTable; h: ulong; pData: Pointer): Integer; cdecl; + zend_hash_index_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; h: ulong; pData: Pointer): Integer; cdecl; { Misc } - zend_hash_exists : function(ht: PHashTable; arKey: zend_pchar; nKeyLength: uint): Integer; cdecl; - - zend_hash_index_exists : function(ht: PHashTable; h: ulong): Integer; cdecl; - - zend_hash_next_free_element : function(ht: PHashTable): Longint; cdecl; + zend_hash_exists : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint): Integer; cdecl; + zend_hash_index_exists : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; h: ulong): Integer; cdecl; + {$IFNDEF PHP7} + zend_hash_next_free_element : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}): Longint; cdecl; + {$ENDIF} { traversing } - zend_hash_move_forward_ex : function(ht: PHashTable; pos: HashPosition): Integer; cdecl; + zend_hash_move_forward_ex : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pos: HashPosition): Integer; cdecl; - zend_hash_move_backwards_ex : function(ht: PHashTable; pos: HashPosition): Integer; cdecl; + zend_hash_move_backwards_ex : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pos: HashPosition): Integer; cdecl; - zend_hash_get_current_key_ex : function(ht: PHashTable; + zend_hash_get_current_key_ex : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var str_index: zend_pchar; var str_length: uint; var num_index: ulong; duplicate: boolean; pos: HashPosition): Integer; cdecl; - zend_hash_get_current_key_type_ex : function(ht: PHashTable; pos: HashPosition): Integer; cdecl; + zend_hash_get_current_key_type_ex : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pos: HashPosition): Integer; cdecl; - zend_hash_get_current_data_ex : function(ht: PHashTable; pData: Pointer; pos: HashPosition): Integer; cdecl; + zend_hash_get_current_data_ex : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pData: Pointer; pos: HashPosition): Integer; cdecl; - zend_hash_internal_pointer_reset_ex : procedure(ht: PHashTable; pos: HashPosition); cdecl; + zend_hash_internal_pointer_reset_ex : procedure(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pos: HashPosition); cdecl; - zend_hash_internal_pointer_end_ex : procedure(ht: PHashTable; pos: HashPosition); cdecl; + zend_hash_internal_pointer_end_ex : procedure(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pos: HashPosition); cdecl; { Copying, merging and sorting } - zend_hash_copy : procedure(target: PHashTable; source: PHashTable; + zend_hash_copy : procedure(target: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; source: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; pCopyConstructor: pointer; tmp: Pointer; size: uint); cdecl; - zend_hash_sort : function(ht: PHashTable; sort_func: pointer; + zend_hash_sort : + {$IFDEF PHP7} + function(ht:PZend_array; sort_func:sort_func_t; compare_func:compare_func_t; renumber:zend_bool):longint; cdecl; + {$ELSE} + function(ht: PHashTable; sort_func: pointer; compare_func: pointer; renumber: Integer; TSRMLS_DC: Pointer): Integer; cdecl; + {$ENDIF} - zend_hash_compare : function(ht1: PHashTable; ht2: PHashTable; + zend_hash_compare : function(ht1: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; ht2: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; compar: pointer; ordered: boolean; TSRMLS_DC: Pointer): Integer; cdecl; - zend_hash_minmax : function(ht: PHashTable; compar: pointer; + zend_hash_minmax : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; compar: pointer; flag: Integer; pData: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; - - zend_hash_num_elements : function(ht: PHashTable): Integer; cdecl; - - zend_hash_rehash : function(ht: PHashTable): Integer; cdecl; + {$IFNDEF PHP7} + zend_hash_num_elements : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}): Integer; cdecl; + {$ENDIF} + zend_hash_rehash : function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}): Integer; cdecl; zend_hash_func : function(arKey: zend_pchar; nKeyLength: uint): Longint; cdecl; -function zend_hash_get_current_data(ht: PHashTable; pData: Pointer): Integer; cdecl; -procedure zend_hash_internal_pointer_reset(ht: PHashTable); cdecl; +function zend_hash_get_current_data(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; pData: Pointer): Integer; cdecl; +procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}); cdecl; var @@ -463,11 +477,11 @@ procedure convert_to_string(op: pzval); convert_to_array : procedure(op: Pzval); cdecl; convert_to_object : procedure(op: Pzval); cdecl; - + {$IFNDEF PHP7} add_char_to_string : function(_result: Pzval; op1: Pzval; op2: Pzval): Integer; cdecl; add_string_to_string : function(_result: Pzval; op1: Pzval; op2: Pzval): Integer; cdecl; - + {$ENDIF} zend_string_to_double : function(number: zend_pchar; length: zend_uint): Double; cdecl; zval_is_true : function(op: Pzval): Integer; cdecl; @@ -532,20 +546,22 @@ procedure convert_to_string(op: pzval); zend_html_putc : procedure(c: zend_uchar); cdecl; zend_html_puts : procedure(s: zend_pchar; len: uint; TSRMLS_DC: Pointer); cdecl; - + {$IFDEF PHP7} + zend_parse_parameters_throw : function(num_args:longint; type_spec:PAnsiChar):longint; cdecl varargs; + {$ELSE} zend_indent : procedure; cdecl; - + {$ENDIF} ZendGetParameters : function: integer; cdecl; zend_get_params_ex : function(param_count : Integer; Args : {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}) :integer; cdecl varargs; function zend_get_parameters_ex(number: integer; var Params: pzval_array): integer; function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; function zend_get_parameters(ht: integer; param_count: integer; Params: array of -{$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}): integer; +ppzval): integer; var _zend_get_parameters_array_ex : function(param_count: integer; argument_array: - {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDIF}; TSRMLS_CC: pointer): integer; cdecl; + pppzval; TSRMLS_CC: pointer): integer; cdecl; procedure dispose_pzval_array(Params: pzval_array); @@ -572,7 +588,7 @@ procedure dispose_pzval_array(Params: pzval_array); execute : procedure(op_array: pointer; TSRMLS_DC: Pointer); cdecl; zend_wrong_param_count : procedure(TSRMLS_D: pointer); cdecl; - _zend_hash_quick_add_or_update:function(ht: PHashTable; arKey: zend_pchar; nKeyLength: uint; h: uint; out pData: pzval; nDataSize: uint; pDest: PPointer; flag: Integer) : Integer; cdecl; + _zend_hash_quick_add_or_update:function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint; h: uint; out pData: pzval; nDataSize: uint; pDest: PPointer; flag: Integer) : Integer; cdecl; {$IFDEF PHP4} add_property_long_ex : function(arg: pzval; key: zend_pchar; key_len: uint; l: longint): integer; cdecl; {$ELSE} @@ -597,8 +613,10 @@ procedure dispose_pzval_array(Params: pzval_array); add_property_zval_ex : function(arg: pzval; key: zend_pchar; key_len: uint; value: pzval; TSRMLS_DC: Pointer): integer; cdecl; {$ENDIF} - - call_user_function : function(function_table: PHashTable; object_pp: pzval; + {$IFDEF P_CUT} + call_user_function : procedure(func:pzval; argv:pzval; argc:integer);cdecl; + {$ELSE} + call_user_function : function(function_table: PHashTable; object_pp: pzval; function_name: pzval; return_ptr: pzval; param_count: zend_uint; params: pzval_array_ex; TSRMLS_DC: Pointer): integer; cdecl; @@ -607,8 +625,8 @@ procedure dispose_pzval_array(Params: pzval_array); params: pzval_array; no_separation: zend_uint; symbol_table: PHashTable; TSRMLS_DC: Pointer): integer; cdecl; - -{ + {$ENDIF} + { call_user_function_ex(HashTable *function_table, zval **object_pp, zval *function_name, @@ -748,15 +766,16 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: Array of AnsiString; keyvals: Array o procedure ZVAL_ARRAYAS(z: pzval; keynames: TASDate; keyvals: TASDate); overload; procedure ZVAL_ARRAYWS(z: pzval; keynames: TWSDate; keyvals: TWSDate); overload; procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of string); overload; -procedure HashToArray(HT: PHashTable; var AR: TArrayVariant); overload; +procedure HashToArray(HT: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var AR: TArrayVariant); overload; procedure ArrayToHash(AR: Array of Variant; var HT: pzval); overload; procedure ArrayToHash(Keys,AR: Array of Variant; var HT: pzval); overload; function ToStrA(V: Variant): zend_ustr; function ToStr(V: Variant): String; function toWChar(s: zend_pchar): PWideChar; -function ZendToVariant(const Value: {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDIF}): Variant; overload; -function ZendToVariant(const Value: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}): Variant; overload; - +{$IFNDEF PHP7} +function ZendToVariant(const Value: pppzval): Variant; overload; +function ZendToVariant(const Value: ppzval): Variant; overload; +{$ENDIF} procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); @@ -764,7 +783,8 @@ procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); procedure ZVAL_STRINGL(z: pzval; s: zend_pchar; l: integer; duplicate: boolean); procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); -procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: pointer); +procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: +{$IFDEF PHP7}HashTable{$ELSE}pointer{$ENDIF}); var @@ -776,12 +796,12 @@ procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: z {$IFDEF PHP5} zend_copy_constants: procedure(target: PHashTable; source: PHashTable); cdecl; - zend_objects_new : function (_object : pointer; class_type : pointer; TSRMLS_DC : pointer) : _zend_object_value; cdecl; - zend_objects_clone_obj: function(_object: pzval; TSRMLS_DC : pointer): _zend_object_value; cdecl; + zend_objects_new : function (_object : pointer; class_type : pointer; TSRMLS_DC : pointer) : {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; + zend_objects_clone_obj: function(_object: pzval; TSRMLS_DC : pointer): {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; zend_objects_store_add_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; zend_objects_store_del_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; - function_add_ref: procedure (func: PZendFunction); cdecl; + function_add_ref: procedure (func: {$IFDEF PHP7}Pzend_function{$ELSE}PZendFunction{$ENDIF}); cdecl; zend_class_add_ref: procedure(aclass: Ppzend_class_entry); cdecl; @@ -830,13 +850,13 @@ function GetCompilerGlobals : Pzend_compiler_globals; function GetExecutorGlobals : pzend_executor_globals; function GetAllocGlobals : pointer; -function zend_register_functions(functions : pzend_function_entry; function_table : PHashTable; _type: integer; TSRMLS_DC : pointer) : integer; -function zend_unregister_functions(functions : pzend_function_entry; count : integer; function_table : PHashTable; TSRMLS_DC : pointer) : integer; +function zend_register_functions(functions : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; _type: integer; TSRMLS_DC : pointer) : integer; +function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; count : integer; function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; TSRMLS_DC : pointer) : integer; {$IFDEF PHP5} var - zend_get_std_object_handlers : function() : pzend_object_handlers; + zend_get_std_object_handlers : function() : {$IFDEF PHP7}P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; zend_objects_get_address : function (_object : pzval; TSRMLS_DC : pointer) : pzend_object; cdecl; zend_is_true : function(z : pzval) : integer; cdecl; @@ -849,10 +869,10 @@ function Z_STRVAL(z : Pzval) : zend_ustr; function Z_STRUVAL(z : PZval): UTF8String; function Z_STRWVAL(z : pzval) : String; function Z_STRLEN(z : Pzval) : longint; -function Z_ARRVAL(z : Pzval ) : PHashTable; +function Z_ARRVAL(z : Pzval ) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; function Z_OBJ_HANDLE(z :Pzval) : zend_object_handle; -function Z_OBJ_HT(z : Pzval) : pzend_object_handlers; -function Z_OBJPROP(z : Pzval) : PHashtable; +function Z_OBJ_HT(z : Pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; +function Z_OBJPROP(z : Pzval) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; function Z_VARREC(z: pzval): TVarRec; procedure zend_addref_p(z: pzval); cdecl; @@ -865,11 +885,32 @@ function Z_VARREC(z: pzval): TVarRec; implementation -function zend_hash_add(ht : PHashTable; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDest : pointer) : integer; cdecl; +function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDest : pointer) : integer; cdecl; begin result := zend_hash_add_or_update(ht, arKey, nKeyLength, pData, nDataSize, pDest, HASH_ADD); end; +{$IFDEF PHP7} +function zend_hash_num_elements(ht: Pzend_array): integer; + begin + Result := integer(ht.nNumOfElements); + end; +function add_char_to_string (_result: Pzval; op1: Pzval; op2: Pzval): Integer; +Begin + Result := -1; + if op1.u1.v._type = IS_STRING then + begin + _result.value.str.len := op1.value.str.len + op2.value.str.len; + _result.value.str.val := zend_pchar(zend_ustr(op1.value.str.val) + zend_ustr(op2.value.str.val)); + Result := SUCCESS; + end; +End; +function add_string_to_string(_result: Pzval; op1: Pzval; op2: Pzval): Integer; +begin + Result := add_char_to_string(_result, op1, op2); +end; +{$ENDIF} + function STR_EMPTY_ALLOC : zend_pchar; begin Result := estrndup('', 0); @@ -942,37 +983,61 @@ procedure REGISTER_MAIN_STRINGL_CONSTANT(name: zend_pchar; str: zend_pchar; len: procedure ZVAL_RESOURCE(value: pzval; l: longint); begin - value^._type := IS_RESOURCE; + {$IFDEF PHP7} + value^.u1.v._type + {$ELSE} + value^._type + {$ENDIF} := IS_RESOURCE; value^.value.lval := l; end; procedure ZVAL_BOOL(z: pzval; b: boolean); begin - z^._type := IS_BOOL; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_BOOL; z^.value.lval := integer(b); end; procedure ZVAL_NULL(z: pzval); begin - z^._type := IS_NULL; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_NULL; end; procedure ZVAL_LONG(z: pzval; l: longint); begin - z^._type := IS_LONG; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_LONG; z^.value.lval := l; end; procedure ZVAL_DOUBLE(z: pzval; d: double); begin - z^._type := IS_DOUBLE; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_DOUBLE; z^.value.dval := d; end; procedure ZvalString(z:pzval); begin z^.value.str.len := 0; z^.value.str.val := ''; - z^._type := IS_STRING; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_STRING; end; procedure ZvalString(z:pzval; s:zend_pchar; len:Integer = 0); @@ -989,7 +1054,11 @@ procedure ZvalString(z:pzval; s:zend_pchar; len:Integer = 0); z^.value.str.len := lens; z^.value.str.val := estrndup(s, lens); - z^._type := IS_STRING; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_STRING; end; end; @@ -1044,24 +1113,40 @@ function ZvalStrW; procedure ZvalVAL(z:pzval; v:Boolean); Begin - z._type := IS_BOOL; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_BOOL; z.value.lval := integer(v); End; procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); Begin - z._type := _type; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := _type; z.value.lval := v; End; procedure ZvalVAL(z:pzval); Begin - z._type := IS_NULL; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_NULL; End; procedure ZvalVAL(z:pzval; v:Double); Begin - z._type := IS_LONG; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_LONG; z.value.dval := v; End; procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); @@ -1082,7 +1167,11 @@ procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); z^.value.str.len := lens; z^.value.str.val := _estrndup(AChar, lens, nil, 0, nil, 0); - z^._type := IS_STRING; + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_STRING; end; end; @@ -1093,7 +1182,11 @@ function AddElementZvalArray(z: pzval; Args: array of const; flag: Integer; arKey: zend_pchar; begin Result := FAILURE; - if z._type <> IS_ARRAY then + if {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} <> IS_ARRAY then exit; if len <> 0 then @@ -1104,17 +1197,23 @@ function AddElementZvalArray(z: pzval; Args: array of const; flag: Integer; end; tmp := GetArgPZval(Args[0], 1, true); - Result := _zend_hash_quick_add_or_update(z.value.ht, arKey, len, idx, tmp, + + Result := _zend_hash_quick_add_or_update( + {$IFDEF PHP7}z.value.arr{$ELSE}z.value.ht{$ENDIF}, arKey, len, idx, tmp, sizeof(pzval), nil, flag); end; // Add Next function ZvalArrayAdd(z: pzval; Args: array of const): Integer; overload; begin Result := FAILURE; - if z._type <> IS_ARRAY then + if {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} <> IS_ARRAY then exit; Result := AddElementZvalArray(z, Args, HASH_NEXT_INSERT, - z.value.ht.nNextFreeElement); + {$IFDEF PHP7} z.value.arr.nNextFreeElement {$ELSE} z.value.ht.nNextFreeElement {$ENDIF}); end; // Add Index @@ -1133,37 +1232,45 @@ function ZvalArrayAdd(z: pzval; key: zend_ustr; Args: array of const) function IsArrayRetVal(v: pzval): Boolean; begin - Result := v._type = IS_ARRAY; + Result := {$IFDEF PHP7} + v^.u1.v._type + {$ELSE} + v^._type + {$ENDIF} = IS_ARRAY; end; function ZValArrayKeyExists(v: pzval; key: zend_ustr): Boolean; overload; begin Result := false; - if v._type <> IS_ARRAY then + if {$IFDEF PHP7} + v^.u1.v._type + {$ELSE} + v^._type + {$ENDIF} <> IS_ARRAY then exit; - if v.value.ht.nNumOfElements = 0 then + if {$IFDEF PHP7} v.value.arr.nNumOfElements {$ELSE} v.value.ht.nNumOfElements {$ENDIF} = 0 then exit; - Result := zend_hash_exists(v.value.ht, zend_pchar(key), Length(key) + 1) = 1; + Result := zend_hash_exists({$IFDEF PHP7}v.value.arr{$ELSE}v.value.ht{$ENDIF}, zend_pchar(key), Length(key) + 1) = 1; end; function ZValArrayKeyExists(v: pzval; idx: Integer): Boolean; overload; begin Result := false; - if (v._type <> IS_ARRAY) then + if ({$IFDEF PHP7} v.u1.v._type {$ELSE} v._type {$ENDIF} <> IS_ARRAY) then exit; - if v.value.ht.nNumOfElements = 0 then + if {$IFDEF PHP7} v.value.arr.nNumOfElements {$ELSE} v.value.ht.nNumOfElements {$ENDIF} = 0 then exit; - Result := zend_hash_index_exists(v.value.ht, idx) = 1; + Result := zend_hash_index_exists({$IFDEF PHP7}v.value.arr{$ELSE}v.value.ht{$ENDIF}, idx) = 1; end; function ZValArrayKeyExists(v: pzval; key: zend_ustr; out pData: pzval) : Boolean; overload; var - tmp: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}; + tmp: ppzval; begin Result := ZValArrayKeyExists(v, key); if Result then @@ -1177,7 +1284,7 @@ function ZValArrayKeyExists(v: pzval; key: zend_ustr; out pData: pzval) function ZValArrayKeyExists(v: pzval; idx: Integer; out pData: pzval) : Boolean; overload; var - tmp: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}; + tmp: ppzval; begin Result := ZValArrayKeyExists(v, idx); if Result then @@ -1189,22 +1296,46 @@ function ZValArrayKeyExists(v: pzval; idx: Integer; out pData: pzval) end; function ZValArrayKeyDel(v: pzval; key: zend_ustr): Boolean; overload; +{$IFDEF PHP7} +var + pzs: pzend_string; +{$ENDIF} begin Result := false; if ZValArrayKeyExists(v, key) then + {$IFDEF PHP7} + begin + pzs^.len := strlen(zend_pchar(key)); + pzs^.val := zend_pchar(key); + Result := zend_hash_del_key_or_index(v.value.arr, pzs) = SUCCESS + end; + {$ELSE} Result := zend_hash_del_key_or_index(v.value.ht, zend_pchar(key), Length(key) + 1, 0, HASH_DEL_KEY) = SUCCESS; + {$ENDIF} end; function ZValArrayKeyDel(v: pzval; idx: Integer): Boolean; overload; +{$IFDEF PHP7} +var + pzs: pzend_string; +{$ENDIF} begin Result := false; if ZValArrayKeyExists(v, idx) then - Result := zend_hash_del_key_or_index(v.value.ht, nil, 0, idx, + {$IFDEF PHP7} + begin + pzs^.len := strlen(zend_pchar(inttostr(idx))); + pzs^.val := zend_pchar(inttostr(idx)); + Result := zend_hash_del_key_or_index(v.value.arr, pzs) = SUCCESS + end; + {$ELSE} + Result := zend_hash_del_key_or_index({$IFDEF PHP7}v.value.arr{$ELSE}v.value.ht{$ENDIF}, nil, 0, idx, HASH_DEL_INDEX) = SUCCESS; + {$ENDIF} end; -function ZValArrayKeyFind(v: pzval; key: zend_ustr; out pData: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}) +function ZValArrayKeyFind(v: pzval; key: zend_ustr; out pData: ppzval) : Boolean; overload; var keyStr: zend_pchar; @@ -1213,14 +1344,14 @@ function ZValArrayKeyFind(v: pzval; key: zend_ustr; out pData: {$IFNDEF PHP700} keyStr := zend_pchar(key); KeyLength := Length(key) + 1; - Result := zend_hash_quick_find(v.value.ht, keyStr, KeyLength, + Result := zend_hash_quick_find({$IFDEF PHP7}v.value.arr{$ELSE}v.value.ht{$ENDIF}, keyStr, KeyLength, zend_hash_func(keyStr, KeyLength), pData) = SUCCESS; end; -function ZValArrayKeyFind(v: pzval; idx: Integer; out pData: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}) +function ZValArrayKeyFind(v: pzval; idx: Integer; out pData: ppzval) : Boolean; overload; begin - Result := zend_hash_quick_find(v.value.ht, nil, 0, idx, pData) = SUCCESS; + Result := zend_hash_quick_find({$IFDEF PHP7}v.value.arr{$ELSE}v.value.ht{$ENDIF}, nil, 0, idx, pData) = SUCCESS; end; procedure MAKE_STD_ZVAL(out Result: pzval); begin @@ -1238,7 +1369,7 @@ function GetArgPZval; begin if Make then MAKE_STD_ZVAL(Result); - Result._type := IS_NULL; + {$IFDEF PHP7} Result.u1.v._type {$ELSE} Result._type {$ENDIF} := IS_NULL; end else if Args.VType = vtPointer then Result := Args.VPointer @@ -1293,7 +1424,7 @@ procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); z^.value.str.val := estrndup(__s, z^.value.str.len) else z^.value.str.val := __s; - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); @@ -1311,7 +1442,7 @@ procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); z^.value.str.val := estrndup(__s, z^.value.str.len) else z^.value.str.val := __s; - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); @@ -1335,7 +1466,7 @@ procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); z^.value.str.val := estrndup(__s, z^.value.str.len) else z^.value.str.val := __s; - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_STRINGL(z: pzval; s: zend_pchar; l: integer; duplicate: boolean); @@ -1353,7 +1484,7 @@ procedure ZVAL_STRINGL(z: pzval; s: zend_pchar; l: integer; duplicate: boolean); z^.value.str.val := estrndup(__s, __l) else z^.value.str.val := __s; - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); @@ -1378,7 +1509,7 @@ procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); z^.value.str.val := estrndup(__s, __l) else z^.value.str.val := __s; - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_EMPTY_STRING(z: pzval); @@ -1389,18 +1520,18 @@ procedure ZVAL_EMPTY_STRING(z: pzval); (*{$ELSE} z^.value.str.val := ''; {$ENDIF}*) - z^._type := IS_STRING; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; procedure ZVAL_TRUE(z: pzval); begin - z^._type := IS_BOOL; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_BOOL; z^.value.lval := 1; end; procedure ZVAL_FALSE(z: pzval); begin - z^._type := IS_BOOL; + {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_BOOL; z^.value.lval := 0; end; function ToStrA(V: Variant): zend_ustr; @@ -1428,11 +1559,11 @@ function toWChar(s: zend_pchar): PWideChar; Result := PWideChar(ss); end; -function ZendToVariant(const Value: {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDIF}): Variant; overload; +function ZendToVariant(const Value: pppzval): Variant; overload; Var S: String; begin - case Value^^^._type of + case {$IFDEF PHP7} Value^^^.u1.v._type {$ELSE}Value^^^._type{$ENDIF} of 1: Result := Value^^^.value.lval; 2: Result := Value^^^.value.dval; 6: begin S := Value^^^.value.str.val; Result := S; end; @@ -1440,12 +1571,12 @@ function ZendToVariant(const Value: {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDI end; end; -function ZendToVariant(const Value: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}): Variant; overload; +function ZendToVariant(const Value: ppzval): Variant; overload; Var S: String; begin Result := Null; - case Value^^._type of + case {$IFDEF PHP7} Value^^.u1.v._type {$ELSE}Value^^._type{$ENDIF} of 1: Result := Value^^.value.lval; 2: Result := Value^^.value.dval; 6: begin S := Value^^.value.str.val; Result := S; end; @@ -1453,10 +1584,10 @@ function ZendToVariant(const Value: {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF end; end; -procedure HashToArray(HT: PHashTable; var AR: TArrayVariant); overload; +procedure HashToArray(HT: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var AR: TArrayVariant); overload; Var Len,I: Integer; - tmp : {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDIF}; + tmp : pppzval; begin len := zend_hash_num_elements(HT); SetLength(AR,len); @@ -1588,7 +1719,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1611,7 +1746,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1634,7 +1773,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of string); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1657,7 +1800,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of zend_ustr); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1680,7 +1827,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1702,7 +1853,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; if Length(arr) = 0 then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1716,7 +1871,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; procedure ZVAL_ARRAY(z: pzval; arr: Variant); overload; var i: integer; - V: TVarData; + {V: TVarData;} begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin @@ -1794,7 +1949,11 @@ procedure ZVAL_ARRAYAC(z: pzval; keynames: Array of ansichar; keyvals: Array of if (Length(keynames) = 0)and(Length(keynames) = Length(keyvals)) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1820,7 +1979,11 @@ procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of if (Length(keynames) = 0)and(Length(keynames) = Length(keyvals)) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1851,7 +2014,11 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: TWSDate; keyvals: TWSDate); overloa //z^.refcount := Length(keynames); //������� ���������� ������������ �������� if (Length(keynames) = 0) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1887,7 +2054,11 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of if (Length(keynames) = 0)and(Length(keynames) = Length(keyvals)) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1919,7 +2090,11 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: TASDate; keyvals: TASDate); overload; if (Length(keynames) = 0)and(Length(keynames) = Length(keyvals)) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -1950,7 +2125,11 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: Array of AnsiString; keyvals: Array o if (Length(keynames) = 0)and(Length(keynames) = Length(keyvals)) then begin - z^.refcount := 1; + {$IFDEF PHP7} + z^.value.counted.gc.refcount + {$ELSE} + z^.refcount + {$ENDIF} := 1; Exit; end; @@ -2154,97 +2333,108 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; zend_hash_add_or_update := GetProcAddress(PHPLib, 'zend_hash_add_or_update'); {$ELSE} // -- zend_hash_add_or_update - _zend_hash_add_or_update := GetProcAddress(PHPLib, '_zend_hash_add_or_update'); + _zend_hash_add_or_update := GetProcAddress(PHPLib, + {$IFDEF PHP7}'_zend_hash_add_or_update@@16'{$ELSE}'_zend_hash_add_or_update'{$ENDIF}); {$ENDIF} // -- zend_hash_destroy - zend_hash_destroy := GetProcAddress(PHPLib, 'zend_hash_destroy'); + zend_hash_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_destroy@@4'{$ELSE}'zend_hash_destroy'{$ENDIF}); // -- zend_hash_clean - zend_hash_clean := GetProcAddress(PHPLib, 'zend_hash_clean'); + zend_hash_clean := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_clean@@4'{$ELSE}'zend_hash_clean'{$ENDIF}); // -- zend_hash_add_empty_element - zend_hash_add_empty_element := GetProcAddress(PHPLib, 'zend_hash_add_empty_element'); + zend_hash_add_empty_element := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_add_empty_element@@8'{$ELSE}'zend_hash_add_empty_element'{$ENDIF}); // -- zend_hash_graceful_destroy - zend_hash_graceful_destroy := GetProcAddress(PHPLib, 'zend_hash_graceful_destroy'); + zend_hash_graceful_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_graceful_destroy@@4'{$ELSE}'zend_hash_graceful_destroy'{$ENDIF}); // -- zend_hash_graceful_reverse_destroy - zend_hash_graceful_reverse_destroy := GetProcAddress(PHPLib, 'zend_hash_graceful_reverse_destroy'); + zend_hash_graceful_reverse_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_graceful_reverse_destroy@@4'{$ELSE}'zend_hash_graceful_reverse_destroy'{$ENDIF}); // -- zend_hash_apply - zend_hash_apply := GetProcAddress(PHPLib, 'zend_hash_apply'); + zend_hash_apply := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_apply@@8'{$ELSE}'zend_hash_apply'{$ENDIF}); // -- zend_hash_apply_with_argument - zend_hash_apply_with_argument := GetProcAddress(PHPLib, 'zend_hash_apply_with_argument'); + zend_hash_apply_with_argument := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_apply_with_argument@@12'{$ELSE}'zend_hash_apply_with_argument'{$ENDIF}); // -- zend_hash_reverse_apply - zend_hash_reverse_apply := GetProcAddress(PHPLib, 'zend_hash_reverse_apply'); + zend_hash_reverse_apply := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_reverse_apply@@8'{$ELSE}'zend_hash_reverse_apply'{$ENDIF}); // -- zend_hash_del_key_or_index - zend_hash_del_key_or_index := GetProcAddress(PHPLib, 'zend_hash_del_key_or_index'); + zend_hash_del_key_or_index := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_del@@8'{$ELSE}'zend_hash_del_key_or_index'{$ENDIF}); // -- zend_get_hash_value zend_get_hash_value := GetProcAddress(PHPLib, {$IFDEF PHP560}'zend_hash_func'{$ELSE}'zend_get_hash_value'{$ENDIF}); // -- zend_hash_find - zend_hash_find := GetProcAddress(PHPLib, 'zend_hash_find'); + zend_hash_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_find'{$ENDIF}); // -- zend_hash_quick_find - zend_hash_quick_find := GetProcAddress(PHPLib, 'zend_hash_quick_find'); + zend_hash_quick_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_quick_find'{$ENDIF}); // -- zend_hash_index_find - zend_hash_index_find := GetProcAddress(PHPLib, 'zend_hash_index_find'); + zend_hash_index_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_index_find@@8'{$ELSE}'zend_hash_index_find'{$ENDIF}); // -- zend_hash_exists - zend_hash_exists := GetProcAddress(PHPLib, 'zend_hash_exists'); + zend_hash_exists := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_exists@@8'{$ELSE}'zend_hash_exists'{$ENDIF}); // -- zend_hash_index_exists - zend_hash_index_exists := GetProcAddress(PHPLib, 'zend_hash_index_exists'); - + zend_hash_index_exists := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_index_exists@@8'{$ELSE}'zend_hash_index_exists'{$ENDIF}); + {$IFDEF PHP7} + _zend_hash_add_or_update := GetProcAddress(PHPLib, '_zend_hash_add_or_update@@16'); + _zend_hash_add := GetProcAddress(PHPLib, '_zend_hash_add@@12'); + {$IFDEF P_CUT} + zend_hash_index_findZval := GetProcAddress(PHPLib,'zend_hash_index_findZval'); + zend_symtable_findTest := GetProcAddress(PHPLib,'zend_symtable_findTest'); + zend_hash_index_existsZval := GetProcAddress(PHPLib,'zend_hash_index_existsZval'); + {$ENDIF} + {$ELSE} // -- zend_hash_next_free_element zend_hash_next_free_element := GetProcAddress(PHPLib, 'zend_hash_next_free_element'); - + {$ENDIF} // -- zend_hash_move_forward_ex - zend_hash_move_forward_ex := GetProcAddress(PHPLib, 'zend_hash_move_forward_ex'); + zend_hash_move_forward_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_move_forward_ex@@8'{$ELSE}'zend_hash_move_forward_ex'{$ENDIF}); // -- zend_hash_move_backwards_ex - zend_hash_move_backwards_ex := GetProcAddress(PHPLib, 'zend_hash_move_backwards_ex'); + zend_hash_move_backwards_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_move_backwards_ex@@8'{$ELSE}'zend_hash_move_backwards_ex'{$ENDIF}); // -- zend_hash_get_current_key_ex - zend_hash_get_current_key_ex := GetProcAddress(PHPLib, 'zend_hash_get_current_key_ex'); + zend_hash_get_current_key_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_key_ex@@16'{$ELSE}'zend_hash_get_current_key_ex'{$ENDIF}); // -- zend_hash_get_current_key_type_ex - zend_hash_get_current_key_type_ex := GetProcAddress(PHPLib, 'zend_hash_get_current_key_type_ex'); + zend_hash_get_current_key_type_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_key_type_ex@@8'{$ELSE}'zend_hash_get_current_key_type_ex'{$ENDIF}); // -- zend_hash_get_current_data_ex - zend_hash_get_current_data_ex := GetProcAddress(PHPLib, 'zend_hash_get_current_data_ex'); + zend_hash_get_current_data_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_data_ex@@8'{$ELSE}'zend_hash_get_current_data_ex'{$ENDIF}); // -- zend_hash_internal_pointer_reset_ex - zend_hash_internal_pointer_reset_ex := GetProcAddress(PHPLib, 'zend_hash_internal_pointer_reset_ex'); + zend_hash_internal_pointer_reset_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_internal_pointer_reset_ex@@8'{$ELSE}'zend_hash_internal_pointer_reset_ex'{$ENDIF}); // -- zend_hash_internal_pointer_end_ex - zend_hash_internal_pointer_end_ex := GetProcAddress(PHPLib, 'zend_hash_internal_pointer_end_ex'); + zend_hash_internal_pointer_end_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_internal_pointer_end_ex@@8'{$ELSE}'zend_hash_internal_pointer_end_ex'{$ENDIF}); // -- zend_hash_copy - zend_hash_copy := GetProcAddress(PHPLib, 'zend_hash_copy'); + zend_hash_copy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_copy@@12'{$ELSE}'zend_hash_copy'{$ENDIF}); // -- zend_hash_sort - zend_hash_sort := GetProcAddress(PHPLib, 'zend_hash_sort'); + zend_hash_sort := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_sort_ex@@16'{$ELSE}'zend_hash_sort'{$ENDIF}); // -- zend_hash_compare zend_hash_compare := GetProcAddress(PHPLib, 'zend_hash_compare'); // -- zend_hash_minmax - zend_hash_minmax := GetProcAddress(PHPLib, 'zend_hash_minmax'); + zend_hash_minmax := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_minmax@@12'{$ELSE}'zend_hash_minmax'{$ENDIF}); // -- zend_hash_num_elements + {$IFNDEF PHP7} zend_hash_num_elements := GetProcAddress(PHPLib, 'zend_hash_num_elements'); + {$ENDIF} // -- zend_hash_rehash - zend_hash_rehash := GetProcAddress(PHPLib, 'zend_hash_rehash'); + zend_hash_rehash := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_rehash@@4'{$ELSE}'zend_hash_rehash'{$ENDIF}); // -- zend_hash_func zend_hash_func := GetProcAddress(PHPLib, 'zend_hash_func'); @@ -2299,8 +2489,8 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; _zval_copy_ctor := GetProcAddress(PHPLib, '_zval_copy_ctor'); {$ELSE} - _zval_copy_ctor_func := GetProcAddress(PHPLib, '_zval_copy_ctor_func'); - _zval_dtor_func := GetProcAddress(PHPLib, '_zval_dtor_func'); + _zval_copy_ctor_func := GetProcAddress(PHPLib, {$IFDEF PHP7}'_zval_copy_ctor_func@@4'{$ELSE}'_zval_copy_ctor_func'{$ENDIF}); + _zval_dtor_func := GetProcAddress(PHPLib, {$IFDEF PHP7}'_zval_dtor_func@@4'{$ELSE}'_zval_dtor_func'{$ENDIF}); _zval_ptr_dtor := GetProcAddress(PHPLib, '_zval_ptr_dtor'); {$ENDIF} @@ -2342,160 +2532,160 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; zend_stack_apply_with_argument := GetProcAddress(PHPLib, 'zend_stack_apply_with_argument'); // -- _convert_to_string - _convert_to_string := GetProcAddress(PHPLib, '_convert_to_string'); + _convert_to_string := GetProcAddress(PHPLib, {$IFDEF PHP7}'_convert_to_string@@4'{$ELSE}'_convert_to_string'{$ENDIF}); // -- add_function - add_function := GetProcAddress(PHPLib, 'add_function'); + add_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'add_function@@12'{$ELSE}'add_function'{$ENDIF}); // -- sub_function - sub_function := GetProcAddress(PHPLib, 'sub_function'); + sub_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'sub_function@@12'{$ELSE}'sub_function'{$ENDIF}); // -- mul_function - mul_function := GetProcAddress(PHPLib, 'mul_function'); + mul_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'mul_function@@12'{$ELSE}'mul_function'{$ENDIF}); // -- div_function - div_function := GetProcAddress(PHPLib, 'div_function'); + div_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'div_function@@12'{$ELSE}'div_function'{$ENDIF}); // -- mod_function - mod_function := GetProcAddress(PHPLib, 'mod_function'); + mod_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'mod_function@@12'{$ELSE}'mod_function'{$ENDIF}); // -- boolean_xor_function - boolean_xor_function := GetProcAddress(PHPLib, 'boolean_xor_function'); + boolean_xor_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'boolean_xor_function@@12'{$ELSE}'boolean_xor_function'{$ENDIF}); // -- boolean_not_function - boolean_not_function := GetProcAddress(PHPLib, 'boolean_not_function'); + boolean_not_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'boolean_not_function@@8'{$ELSE}'boolean_not_function'{$ENDIF}); // -- bitwise_not_function - bitwise_not_function := GetProcAddress(PHPLib, 'bitwise_not_function'); + bitwise_not_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_not_function@@8'{$ELSE}'bitwise_not_function'{$ENDIF}); // -- bitwise_or_function - bitwise_or_function := GetProcAddress(PHPLib, 'bitwise_or_function'); + bitwise_or_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_or_function@@12'{$ELSE}'bitwise_or_function'{$ENDIF}); // -- bitwise_and_function - bitwise_and_function := GetProcAddress(PHPLib, 'bitwise_and_function'); + bitwise_and_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_and_function@@12'{$ELSE}'bitwise_and_function'{$ENDIF}); // -- bitwise_xor_function - bitwise_xor_function := GetProcAddress(PHPLib, 'bitwise_xor_function'); + bitwise_xor_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_xor_function@@12'{$ELSE}'bitwise_xor_function'{$ENDIF}); // -- shift_left_function - shift_left_function := GetProcAddress(PHPLib, 'shift_left_function'); + shift_left_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'shift_left_function@@12'{$ELSE}'shift_left_function'{$ENDIF}); // -- shift_right_function - shift_right_function := GetProcAddress(PHPLib, 'shift_right_function'); + shift_right_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'shift_right_function@@12'{$ELSE}'shift_right_function'{$ENDIF}); // -- concat_function - concat_function := GetProcAddress(PHPLib, 'concat_function'); + concat_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'concat_function@@12'{$ELSE}'concat_function'{$ENDIF}); // -- is_equal_function - is_equal_function := GetProcAddress(PHPLib, 'is_equal_function'); + is_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_equal_function@@12'{$ELSE}'is_equal_function'{$ENDIF}); // -- is_identical_function - is_identical_function := GetProcAddress(PHPLib, 'is_identical_function'); + is_identical_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_identical_function@@12'{$ELSE}'is_identical_function'{$ENDIF}); // -- is_not_identical_function - is_not_identical_function := GetProcAddress(PHPLib, 'is_not_identical_function'); + is_not_identical_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_not_identical_function@@12'{$ELSE}'is_not_identical_function'{$ENDIF}); // -- is_not_equal_function - is_not_equal_function := GetProcAddress(PHPLib, 'is_not_equal_function'); + is_not_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_not_equal_function@@12'{$ELSE}'is_not_equal_function'{$ENDIF}); // -- is_smaller_function - is_smaller_function := GetProcAddress(PHPLib, 'is_smaller_function'); + is_smaller_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_smaller_function@@12'{$ELSE}'is_smaller_function'{$ENDIF}); // -- is_smaller_or_equal_function - is_smaller_or_equal_function := GetProcAddress(PHPLib, 'is_smaller_or_equal_function'); + is_smaller_or_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_smaller_or_equal_function@@12'{$ELSE}'is_smaller_or_equal_function'{$ENDIF}); // -- increment_function - increment_function := GetProcAddress(PHPLib, 'increment_function'); + increment_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'increment_function@@4'{$ELSE}'increment_function'{$ENDIF}); // -- decrement_function - decrement_function := GetProcAddress(PHPLib, 'decrement_function'); + decrement_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'decrement_function@@4'{$ELSE}'decrement_function'{$ENDIF}); // -- convert_scalar_to_number - convert_scalar_to_number := GetProcAddress(PHPLib, 'convert_scalar_to_number'); + convert_scalar_to_number := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_scalar_to_number@@4'{$ELSE}'convert_scalar_to_number'{$ENDIF}); // -- convert_to_long - convert_to_long := GetProcAddress(PHPLib, 'convert_to_long'); + convert_to_long := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_long@@4'{$ELSE}'convert_to_long'{$ENDIF}); // -- convert_to_double - convert_to_double := GetProcAddress(PHPLib, 'convert_to_double'); + convert_to_double := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_double@@4'{$ELSE}'convert_to_double'{$ENDIF}); // -- convert_to_long_base - convert_to_long_base := GetProcAddress(PHPLib, 'convert_to_long_base'); + convert_to_long_base := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_long_base@@8'{$ELSE}'convert_to_long_base'{$ENDIF}); // -- convert_to_null - convert_to_null := GetProcAddress(PHPLib, 'convert_to_null'); + convert_to_null := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_null@@4'{$ELSE}'convert_to_null'{$ENDIF}); // -- convert_to_boolean - convert_to_boolean := GetProcAddress(PHPLib, 'convert_to_boolean'); + convert_to_boolean := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_boolean@@4'{$ELSE}'convert_to_boolean'{$ENDIF}); // -- convert_to_array - convert_to_array := GetProcAddress(PHPLib, 'convert_to_array'); + convert_to_array := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_array@@4'{$ELSE}'convert_to_array'{$ENDIF}); // -- convert_to_object - convert_to_object := GetProcAddress(PHPLib, 'convert_to_object'); - + convert_to_object := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_object@@4'{$ELSE}'convert_to_object'{$ENDIF}); + {$IFNDEF PHP7} // -- add_char_to_string add_char_to_string := GetProcAddress(PHPLib, 'add_char_to_string'); // -- add_string_to_string add_string_to_string := GetProcAddress(PHPLib, 'add_string_to_string'); - + {$ENDIF} // -- zend_string_to_double - zend_string_to_double := GetProcAddress(PHPLib, 'zend_string_to_double'); + zend_string_to_double := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_strtod'{$ELSE}'zend_string_to_double'{$ENDIF}); // -- zval_is_true - zval_is_true := GetProcAddress(PHPLib, 'zval_is_true'); + zval_is_true := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_is_true@@4'{$ELSE}'zval_is_true'{$ENDIF}); // -- compare_function - compare_function := GetProcAddress(PHPLib, 'compare_function'); + compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'compare_function@@12'{$ELSE}'compare_function'{$ENDIF}); // -- numeric_compare_function - numeric_compare_function := GetProcAddress(PHPLib, 'numeric_compare_function'); + numeric_compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'numeric_compare_function@@8'{$ELSE}'numeric_compare_function'{$ENDIF}); // -- string_compare_function - string_compare_function := GetProcAddress(PHPLib, 'string_compare_function'); + string_compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'string_compare_function@@8'{$ELSE}'string_compare_function'{$ENDIF}); // -- zend_str_tolower - zend_str_tolower := GetProcAddress(PHPLib, 'zend_str_tolower'); + zend_str_tolower := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_str_tolower@@8'{$ELSE}'zend_str_tolower'{$ENDIF}); // -- zend_binary_zval_strcmp - zend_binary_zval_strcmp := GetProcAddress(PHPLib, 'zend_binary_zval_strcmp'); + zend_binary_zval_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strcmp@@8'{$ELSE}'zend_binary_zval_strcmp'{$ENDIF}); // -- zend_binary_zval_strncmp - zend_binary_zval_strncmp := GetProcAddress(PHPLib, 'zend_binary_zval_strncmp'); + zend_binary_zval_strncmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strncmp@@12'{$ELSE}'zend_binary_zval_strncmp'{$ENDIF}); // -- zend_binary_zval_strcasecmp - zend_binary_zval_strcasecmp := GetProcAddress(PHPLib, 'zend_binary_zval_strcasecmp'); + zend_binary_zval_strcasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strcasecmp@@8'{$ELSE}'zend_binary_zval_strcasecmp'{$ENDIF}); // -- zend_binary_zval_strncasecmp - zend_binary_zval_strncasecmp := GetProcAddress(PHPLib, 'zend_binary_zval_strncasecmp'); + zend_binary_zval_strncasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strncasecmp@@12'{$ELSE}'zend_binary_zval_strncasecmp'{$ENDIF}); // -- zend_binary_strcmp - zend_binary_strcmp := GetProcAddress(PHPLib, 'zend_binary_strcmp'); + zend_binary_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strcmp@@16'{$ELSE}'zend_binary_strcmp'{$ENDIF}); // -- zend_binary_strncmp - zend_binary_strncmp := GetProcAddress(PHPLib, 'zend_binary_strncmp'); + zend_binary_strncmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strncmp@@20'{$ELSE}'zend_binary_strncmp'{$ENDIF}); // -- zend_binary_strcasecmp - zend_binary_strcasecmp := GetProcAddress(PHPLib, 'zend_binary_strcasecmp'); + zend_binary_strcasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strcasecmp@@16'{$ELSE}'zend_binary_strcasecmp'{$ENDIF}); // -- zend_binary_strncasecmp - zend_binary_strncasecmp := GetProcAddress(PHPLib, 'zend_binary_strncasecmp'); + zend_binary_strncasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strncasecmp@@20'{$ELSE}'zend_binary_strncasecmp'{$ENDIF}); // -- zendi_smart_strcmp - zendi_smart_strcmp := GetProcAddress(PHPLib, 'zendi_smart_strcmp'); + zendi_smart_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zendi_smart_strcmp@@8'{$ELSE}'zendi_smart_strcmp'{$ENDIF}); // -- zend_compare_symbol_tables - zend_compare_symbol_tables := GetProcAddress(PHPLib, 'zend_compare_symbol_tables'); + zend_compare_symbol_tables := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_symbol_tables@@8'{$ELSE}'zend_compare_symbol_tables'{$ENDIF}); // -- zend_compare_arrays - zend_compare_arrays := GetProcAddress(PHPLib, 'zend_compare_arrays'); + zend_compare_arrays := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_arrays@@8'{$ELSE}'zend_compare_arrays'{$ENDIF}); // -- zend_compare_objects - zend_compare_objects := GetProcAddress(PHPLib, 'zend_compare_objects'); + zend_compare_objects := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_objects@@8'{$ELSE}'zend_compare_objects'{$ENDIF}); // -- zend_atoi - zend_atoi := GetProcAddress(PHPLib, 'zend_atoi'); + zend_atoi := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_atoi@@8'{$ELSE}'zend_atoi'{$ENDIF}); // -- get_active_function_name get_active_function_name := GetProcAddress(PHPLib, 'get_active_function_name'); @@ -2532,12 +2722,15 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- zend_html_puts zend_html_puts := GetProcAddress(PHPLib, 'zend_html_puts'); - + {$IFDEF PHP7} + // -- zend_parse_parameters_throw + zend_parse_parameters_throw := GetProcAddress(PHPLib, 'zend_parse_parameters_throw'); + {$ELSE} // -- zend_indent zend_indent := GetProcAddress(PHPLib, 'zend_indent'); - + {$ENDIF} // -- _zend_get_parameters_array_ex - _zend_get_parameters_array_ex := GetProcAddress(PHPLib, '_zend_get_parameters_array_ex'); + _zend_get_parameters_array_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}{$ELSE}{$ENDIF}'_zend_get_parameters_array_ex'); // -- zend_ini_refresh_caches zend_ini_refresh_caches := GetProcAddress(PHPLib, 'zend_ini_refresh_caches'); @@ -2593,9 +2786,10 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- add_property_zval_ex add_property_zval_ex := GetProcAddress(PHPLib, 'add_property_zval_ex'); - call_user_function := GetProcAddress(PHPLib, 'call_user_function'); + call_user_function := GetProcAddress(PHPLib, {$IFDEF P_CUT}'__call_function'{$ELSE}'call_user_function'{$ENDIF}); + {$IFNDEF P_CUT} call_user_function_ex := GetProcAddress(PHPLib, 'call_user_function_ex'); - + {$ENDIF} // -- add_assoc_long_ex add_assoc_long_ex := GetProcAddress(PHPLib, 'add_assoc_long_ex'); @@ -2750,7 +2944,7 @@ procedure convert_to_string(op: pzval); _convert_to_string(op, nil, 0); end; -procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: pointer); +procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: {$IFDEF PHP7}HashTable{$ELSE}pointer{$ENDIF}); begin if class_name = nil then @@ -2761,12 +2955,19 @@ procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: z {$IFNDEF COMPILER_VC9} class_container.name := strdup(class_name); {$ELSE} - class_container.name := estrdup(class_name); + {$IFDEF PHP7} + class_container.name.val := estrdup(class_name); + {$ELSE} + class_container.name := estrdup(class_name); + {$ENDIF} {$ENDIF} - + {$IFDEF PHP7} + class_container.name.len := strlen(class_name); + class_container.function_table := functions; + {$ELSE} class_container.name_length := strlen(class_name); class_container.builtin_functions := functions; - + {$ENDIF} {$IFDEF PHP4} class_container.handle_function_call := nil; class_container.handle_property_get := nil; @@ -2791,19 +2992,26 @@ procedure ALLOC_ZVAL(out Result: pzval); {$ENDIF} procedure INIT_PZVAL(p: pzval); begin + {$IFDEF PHP7} + p^.value.counted.gc.refcount := 1; + {$ELSE} p^.refcount := 1; p^.is_ref := 0; + {$ENDIF} end; procedure LOCK_ZVAL(p: pzval); begin - Inc(p^.refcount); + Inc({$IFDEF PHP7} + p^.value.counted.gc.refcount{$ELSE}p^.refcount{$ENDIF}); end; procedure UNLOCK_ZVAL(p: pzval); begin - if p^.refcount > 0 then - Dec(p^.refcount); + if {$IFDEF PHP7} + p^.value.counted.gc.refcount{$ELSE}p^.refcount{$ENDIF} > 0 then + Dec({$IFDEF PHP7} + p^.value.counted.gc.refcount{$ELSE}p^.refcount{$ENDIF}); end; function MAKE_STD_ZVAL: pzval; @@ -2833,7 +3041,7 @@ function zend_get_parameters_ex(number: integer; var Params: pzval_array): integ function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; var i : integer; - p: {$IFNDEF PHP700} pppzval {$ELSE} pzval{$ENDIF}; + p: pppzval; begin SetLength(Params, number); if number = 0 then @@ -2850,9 +3058,9 @@ function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS for i := 0 to number - 1 do begin - {$IFNDEF PHP700}Params[i]^ := p^^ {$ELSE}Params[i] := p{$ENDIF}; + Params[i]^ := p^^; if i <> number then - inc(integer({$IFNDEF PHP700}p^{$ELSE}p{$ENDIF}), sizeof({$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF})); + inc(integer(p^), sizeof(ppzval)); end; efree(p); @@ -2969,7 +3177,18 @@ procedure CheckZendErrors; if @zend_hash_index_find = nil then raise EPHP4DelphiException.Create('zend_hash_index_find'); if @zend_hash_exists = nil then raise EPHP4DelphiException.Create('zend_hash_exists'); if @zend_hash_index_exists = nil then raise EPHP4DelphiException.Create('zend_hash_index_exists'); + {$IFDEF PHP7} + if @_zend_hash_add = nil then raise EPHP4DelphiException.Create('_zend_hash_add'); + if @_zend_hash_add_or_update = nil then raise EPHP4DelphiException.Create('_zend_hash_add_or_update'); + + if @zend_hash_index_findZval = nil then raise EPHP4DelphiException.Create('zend_hash_index_findZval'); + if @zend_symtable_findTest = nil then raise EPHP4DelphiException.Create('zend_symtable_findTest'); + if @zend_hash_index_existsZval = nil then raise EPHP4DelphiException.Create('zend_hash_index_existsZval'); + + {$ENDIF} + {$IFNDEF PHP7} if @zend_hash_next_free_element = nil then raise EPHP4DelphiException.Create('zend_hash_next_free_element'); + {$ENDIF} if @zend_hash_move_forward_ex = nil then raise EPHP4DelphiException.Create('zend_hash_move_forward_ex'); if @zend_hash_move_backwards_ex = nil then raise EPHP4DelphiException.Create('zend_hash_move_backwards_ex'); if @zend_hash_get_current_key_ex = nil then raise EPHP4DelphiException.Create('zend_hash_get_current_key_ex'); @@ -3003,7 +3222,7 @@ procedure CheckZendErrors; if @_zval_copy_ctor = nil then raise EPHP4DelphiException.Create('_zval_copy_ctor'); {$ELSE} if @_zval_dtor_func = nil then raise EPHP4DelphiException.Create('_zval_dtor_func'); - if @_zval_copy_ctor_func = nil then raise EPHP4DelphiException.Create('_zval_ctor_func'); + if @_zval_copy_ctor_func = nil then raise EPHP4DelphiException.Create('_zval_copy_ctor_func'); {$ENDIF} if @zend_print_variable = nil then raise EPHP4DelphiException.Create('zend_print_variable'); @@ -3081,7 +3300,11 @@ procedure CheckZendErrors; if @highlight_string = nil then raise EPHP4DelphiException.Create('highlight_string'); if @zend_html_putc = nil then raise EPHP4DelphiException.Create('zend_html_putc'); if @zend_html_puts = nil then raise EPHP4DelphiException.Create('zend_html_puts'); + {$IFDEF PHP7} + if @zend_parse_parameters_throw = nil then EPHP4DelphiException.Create('zend_parse_parameters_throw'); + {$ELSE} if @zend_indent = nil then raise EPHP4DelphiException.Create('zend_indent'); + {$ENDIF} if @_zend_get_parameters_array_ex = nil then raise EPHP4DelphiException.Create('_zend_get_parameters_array_ex'); if @zend_ini_refresh_caches = nil then raise EPHP4DelphiException.Create('zend_ini_refresh_caches'); if @zend_alter_ini_entry = nil then raise EPHP4DelphiException.Create('zend_alter_ini_entry'); @@ -3101,7 +3324,9 @@ procedure CheckZendErrors; if @add_property_stringl_ex = nil then raise EPHP4DelphiException.Create('add_property_stringl_ex'); if @add_property_zval_ex = nil then raise EPHP4DelphiException.Create('add_property_zval_ex'); if @call_user_function = nil then raise EPHP4DelphiException.Create('call_user_function'); + {$IFNDEF P_CUT} if @call_user_function_ex = nil then raise EPHP4DelphiException.Create('call_user_function_ex'); + {$ENDIF} if @add_assoc_long_ex = nil then raise EPHP4DelphiException.Create('add_assoc_long_ex'); if @add_assoc_null_ex = nil then raise EPHP4DelphiException.Create('add_assoc_null_ex'); if @add_assoc_bool_ex = nil then raise EPHP4DelphiException.Create('add_assoc_bool_ex'); @@ -3147,14 +3372,14 @@ procedure CheckZendErrors; end; {$ENDIF} -function zend_hash_get_current_data(ht: PHashTable; pData: Pointer): Integer; cdecl; +function zend_hash_get_current_data(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; pData: Pointer): Integer; cdecl; begin - result := zend_hash_get_current_data_ex(ht, pData, nil); + result := zend_hash_get_current_data_ex(ht, pData, cardinal(nil)); end; -procedure zend_hash_internal_pointer_reset(ht: PHashTable); cdecl; +procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}); cdecl; begin - zend_hash_internal_pointer_reset_ex(ht, nil); + zend_hash_internal_pointer_reset_ex(ht, cardinal(nil)); end; function ts_resource(id : integer) : pointer; @@ -3174,10 +3399,13 @@ function zval_copy_ctor(val : pzval) : integer; end; {$ENDIF} -function zend_unregister_functions(functions : pzend_function_entry; count : integer; function_table : PHashTable; TSRMLS_DC : pointer) : integer; +function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; count : integer; function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; TSRMLS_DC : pointer) : integer; var i : integer; - ptr : pzend_function_entry; + {$IFDEF PHP7} + pzs: pzend_string; + {$ENDIF} + ptr : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; begin Result := SUCCESS; i := 0; @@ -3188,7 +3416,13 @@ function zend_unregister_functions(functions : pzend_function_entry; count : int begin if ( count <> -1 ) and (i >= count) then break; + {$IFDEF PHP7} + pzs^.len := strlen(ptr.fname); + pzs^.val := ptr.fname; + zend_hash_del_key_or_index(function_table, pzs); + {$ELSE} zend_hash_del_key_or_index(function_table, ptr.fname, strlen(ptr.fname) +1, 0, HASH_DEL_KEY); + {$ENDIF} inc(ptr); inc(i); end; @@ -3196,14 +3430,14 @@ function zend_unregister_functions(functions : pzend_function_entry; count : int // registers all functions in *library_functions in the function hash -function zend_register_functions(functions : pzend_function_entry; function_table : PHashTable; _type: integer; TSRMLS_DC : pointer) : integer; +function zend_register_functions(functions : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; _type: integer; TSRMLS_DC : pointer) : integer; var - ptr : pzend_function_entry; - _function : zend_function; - internal_function : PzendInternalFunction; + ptr : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; + _function : {$IFDEF PHP7} _zend_function{$ELSE}zend_function{$ENDIF}; + internal_function :{$IFDEF PHP7}P_zend_internal_function{$ELSE}PzendInternalFunction{$ENDIF}; count : integer; unload : integer; - target_function_table : PHashTable; + target_function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; error_type : integer; begin @@ -3230,8 +3464,12 @@ function zend_register_functions(functions : pzend_function_entry; function_tab while (ptr.fname <> nil) do begin internal_function.handler := ptr.handler; + {$IFDEF PHP7} + internal_function.function_name.val := ptr.fname; + {$ELSE} internal_function.function_name := ptr.fname; - if (internal_function.handler = nil) then begin + {$ENDIF} + if not Assigned(internal_function.handler) then begin zend_error(error_type, 'Null function defined as active function'); zend_unregister_functions(functions, count, target_function_table, TSRMLS_DC); Result := FAILURE; @@ -3314,7 +3552,7 @@ function GetAllocGlobals : pointer; procedure zend_addref_p; begin - Inc(z.refcount); + Inc({$IFDEF PHP7}z.value.counted.gc.refcount{$ELSE}z.refcount{$ENDIF}); end; procedure my_class_add_ref; @@ -3355,10 +3593,10 @@ function Z_LVAL(z : pzval) : longint; exit; end; - if z._type = IS_LONG then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_LONG then Result := z.value.lval else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_DOUBLE: Result := Trunc(z.value.dval); IS_BOOL : Result := z.value.lval; IS_STRING: Result := StrToIntDef( Z_STRVAL(z), 0 ); @@ -3375,10 +3613,10 @@ function Z_BVAL(z : pzval) : boolean; exit; end; - if z._type = IS_BOOL then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_BOOL then Result := zend_bool(z.value.lval) else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_DOUBLE: if Trunc(z.value.dval) = 0 then Result := false else Result := true; IS_LONG : if z.value.lval = 0 then Result := false else Result := true; IS_STRING: if Z_STRVAL(z) = '' then Result := False else Result := True; @@ -3396,10 +3634,10 @@ function Z_DVAL(z : pzval) : double; exit; end; - if z._type = IS_DOUBLE then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_DOUBLE then Result := z.value.dval else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_LONG, IS_BOOL: Result := z.value.lval; IS_STRING: Result := StrToFloatDef( Z_STRVAL(z), 0 ); else @@ -3418,7 +3656,7 @@ function Z_VARREC(z: pzval): TVarRec; exit; end; - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_BOOL: begin Result.VType := vtBoolean; Result.VBoolean := Boolean(z.value.lval); @@ -3460,12 +3698,12 @@ function Z_STRUVAL(z : pzval) : UTF8String; exit; end; - if z._type = IS_STRING then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then begin SetLength(Result, z.value.str.len); Move(z.value.str.val^, Result[1], z.value.str.len); end else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_LONG: Result := IntToStr(z.value.lval); IS_DOUBLE: Result := FloatToStr(z.value.dval); IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; @@ -3482,12 +3720,12 @@ function Z_STRVAL(z : pzval) : zend_ustr; exit; end; - if z._type = IS_STRING then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then begin SetLength(Result, z.value.str.len); Move(z.value.str.val^, Result[1], z.value.str.len); end else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_LONG: Result := IntToStr(z.value.lval); IS_DOUBLE: Result := FloatToStr(z.value.dval); IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; @@ -3504,12 +3742,12 @@ function Z_STRWVAL(z : pzval) : String; exit; end; - if z._type = IS_STRING then + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then begin SetLength(Result, z.value.str.len); Move(z.value.str.val^, Result[1], z.value.str.len); end else - case z._type of + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_LONG: Result := IntToStr(z.value.lval); IS_DOUBLE: Result := FloatToStr(z.value.dval); IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; @@ -3523,9 +3761,9 @@ function Z_STRLEN(z : pzval) : longint; Result := Length(Z_STRVAL(z)); end; -function Z_ARRVAL(z : pzval ) : PHashTable; +function Z_ARRVAL(z : pzval ) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; begin - Result := z.value.ht; + Result := {$IFDEF PHP7} z.value.arr {$ELSE}z.value.ht{$ENDIF}; end; function Z_OBJ_HANDLE(z :pzval) : zend_object_handle; @@ -3533,18 +3771,24 @@ function Z_OBJ_HANDLE(z :pzval) : zend_object_handle; Result := z.value.obj.handle; end; -function Z_OBJ_HT(z : pzval) : pzend_object_handlers; +function Z_OBJ_HT(z : pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; begin Result := z.value.obj.handlers; end; -function Z_OBJPROP(z : pzval) : PHashtable; +function Z_OBJPROP(z : pzval) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; +{$IFDEF PHP7} +begin + Result := Z_OBJ_HT(z)^.get_properties(z); +end; +{$ELSE} var TSRMLS_DC : pointer; begin TSRMLS_DC := ts_resource_ex(0, nil); Result := Z_OBJ_HT(z)^.get_properties(@z, TSRMLS_DC); end; +{$ENDIF} {$ENDIF} @@ -3552,7 +3796,7 @@ function Z_OBJPROP(z : pzval) : PHashtable; {$IFDEF PHP5} procedure _zval_copy_ctor (val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); begin - if val^._type <= IS_BOOL then + if {$IFDEF PHP7}val^.u1.v._type{$ELSE}val^._type{$ENDIF} <= IS_BOOL then Exit else _zval_copy_ctor_func(val, __zend_filename, __zend_lineno); @@ -3560,28 +3804,38 @@ procedure _zval_copy_ctor (val: pzval; __zend_filename: zend_pchar; __zend_line procedure _zval_dtor(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); begin - if val^._type <= IS_BOOL then + if {$IFDEF PHP7}val^.u1.v._type{$ELSE}val^._type{$ENDIF} <= IS_BOOL then Exit else _zval_dtor_func(val, __zend_filename, __zend_lineno); end; -function zend_hash_init (ht : PHashTable; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent: zend_bool) : integer; +function zend_hash_init (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent: zend_bool) : integer; begin Result := _zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent, nil, 0); end; -function zend_hash_add_or_update(ht : PHashTable; arKey : zend_pchar; - nKeyLength : uint; pData : pointer; nDataSize : uint; pDes : pointer; +function zend_hash_add_or_update(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; + nKeyLength : uint; pData : {$IFDEF PHP7}pzval{$ELSE}pointer{$ENDIF}; nDataSize : uint; pDes : pointer; flag : integer) : integer; +{$IFDEF PHP7} +var pz: Pzend_string; +{$ENDIF} begin + {$IFDEF PHP7} + pz^.len := strlen(arKey); + pz^.val := arKey; + if Assigned(_zend_hash_add_or_update) then + Result := _zend_hash_add_or_update(ht, pz, pData, flag, '', 0).u2.fe_iter_idx + {$ELSE} if Assigned(_zend_hash_add_or_update) then Result := _zend_hash_add_or_update(ht, arKey, nKeyLength, pData, nDataSize, pDes, flag, nil, 0) + {$ENDIF} else Result := FAILURE; end; -function zend_hash_init_ex (ht : PHashTable; nSize : uint; pHashFunction : pointer; +function zend_hash_init_ex (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent : zend_bool; bApplyProtection : zend_bool): integer; begin Result := _zend_hash_init_ex(ht, nSize, pHashFunction, pDestructor, persistent, bApplyProtection, nil, 0); diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index ae23209..627b682 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -16,7 +16,7 @@ interface uses - {$IFNDEF FPC} Windows {$ELSE} LCLType{$ENDIF}, SysUtils; + {$IFNDEF FPC} Windows {$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7} hzend_types, {$ENDIF} SysUtils; const //zend.h @@ -504,28 +504,32 @@ _zend_refcounted = record gc : zend_refcounted_h; end; zend_refcounted = _zend_refcounted; - zend_string = record + _zend_string = record gc : zend_refcounted_h; h : zend_ulong; len : size_t; val : zend_pchar; end; + + P_zend_refcounted = ^_zend_refcounted; + zend_string = _zend_string; + P_zend_string = ^_zend_string; {$ENDIF} zend_ushort = word; unsigned_char = byte; { Common Types } +{$IFNDEF PHP7} type pzend_string = {$IFDEF PHP_UNICE}PUTF8Char{$ELSE}PAnsiChar{$ENDIF}; - +{$ENDIF} type uint = longword; PINT = ^Integer; size_t = cardinal; - {$IFNDEF PHP700} + {$IFNDEF PHP7} ppointer = ^pointer; pppointer = ^ppointer; {$ENDIF} - PStat = ^TStat; TStat = record st_dev: Word; @@ -574,7 +578,7 @@ TBucket = record pLast: PBucket; arKey: array[0..0] of zend_uchar; end; - + {$IFNDEF PHP7} PHashTable = ^THashTable; THashTable = record @@ -591,10 +595,10 @@ TBucket = record nApplyCount: Byte; bApplyProtection: boolean; end; + {$ENDIF} + HashPosition = {$IFDEF PHP7} cardinal {$ELSE} PBucket {$ENDIF}; - HashPosition = PBucket; - - + {$IFNDEF PHP7} {$IFDEF PHP5} zend_op_array = @@ -707,13 +711,12 @@ zend_object_iterator_funcs = record move_forward : pointer; rewind : pointer; end; - zend_object_iterator = record data : pointer; funcs : PZendObjectIteratorFuncs; index : ulong; end; - + {$ENDIF} zend_class_iterator_funcs = record funcs : pointer; new_iterator : pointer; @@ -793,9 +796,10 @@ zend_function = record end; {$ENDIF} - + {$IFNDEF PHP7} Pzend_class_entry = ^Tzend_class_entry; PPZend_class_entry = ^PZend_class_entry; + {$ENDIF} {$IFDEF PHP4} Tzend_class_entry = record @@ -813,7 +817,7 @@ zend_function = record handle_property_set: pointer; end; {$ELSE} - + {$IFNDEF PHP7} Tzend_class_entry = record _type : zend_uchar; name : zend_pchar; @@ -823,35 +827,35 @@ Tzend_class_entry = record constants_updated : zend_bool; ce_flags : zend_uint; - function_table : THashTable; - default_properties : THashTable; - properties_info : THashTable; - default_static_members : THashTable; + function_table : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; + default_properties : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; + properties_info : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; + default_static_members : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; static_members : PHashTable; - constants_table : THashTable; + constants_table : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; builtin_functions : pointer; - _constructor : PZendFunction; - _destructor : PZendFunction; - clone : PZendFunction; - __get : PZendFunction; - __set : PZendFunction; - //{$IFDEF PHP510} - __unset : PZendFunction; - __isset : PZendFunction; - //{$ENDIF} - __call: PZendFunction; - //{$IFDEF PHP530} - __callstatic : PZendFunction; - //{$ENDIF} - //{$IFDEF PHP520} - __tostring : pointer; - //{$ENDIF} - //{$IFDEF PHP510} - serialize_func : PZendFunction; - unserialize_func : PZendFunction; - // {$ENDIF} + _constructor : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + _destructor : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + clone : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + __get : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + __set : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$IFDEF PHP510} + __unset : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + __isset : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$ENDIF} + __call: {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$IFDEF PHP530} + __callstatic : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$ENDIF} + {$IFDEF PHP520} + __tostring : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$ENDIF} + {$IFDEF PHP510} + serialize_func : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + unserialize_func : {$IFDEF PHP7}P_zend_function{$ELSE}PZendFunction{$ENDIF}; + {$ENDIF} iterator_funcs : zend_class_iterator_funcs; create_object : pointer; @@ -875,7 +879,9 @@ Tzend_class_entry = record module : pointer; end; {$ENDIF} - + {$ENDIF} + {$IFNDEF PHP7} + //P_zend_object_handlers = ^_zend_object_handlers; Pzend_Object = ^Tzend_object; PPzend_Object = ^PZend_Object; _zend_object = record @@ -894,18 +900,19 @@ _zend_object = record {$ENDIF} end; Tzend_Object = _zend_object; - {$IFDEF PHP5} + {$ENDIF} type - Tzend_object_get_properties = function (_object : pointer; TSRMLS_DC : pointer) : PHashtable; cdecl; + Tzend_object_get_properties = function (_object : pointer; TSRMLS_DC : pointer) :{$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; cdecl; Pzend_object_get_propeeries = ^Tzend_object_get_properties; Tzend_object_get_classname = function(_object : pointer; class_name : pointer; class_name_len : pointer; p : integer; TSRMLS_DC : pointer) : integer; cdecl; - zend_object_handlers = record + {$IFNDEF PHP7} + zend_object_handlers = record // general object functions add_ref : pointer; del_ref : pointer; @@ -936,40 +943,23 @@ zend_object_handlers = record get_closure : pointer; {$ENDIF} end; + {$ENDIF} + zend_object_handle = cardinal; + {$IFNDEF PHP7} pzend_object_handlers = ^zend_object_handlers; - zend_object_handle = cardinal; + _zend_object_value = record handle : zend_object_handle; handlers : pzend_object_handlers; end; TZendObjectValue = _zend_object_value; PZendObjectValue = ^TZendObjectValue; + {$ENDIF} {$ENDIF} - Pzvalue_value = ^zvalue_value; - {$IFDEF PHP7} - zvalue_value = Packed record - case longint of - 0 : ( lval : zend_long ); - 1 : ( dval : double ); - 2 : ( counted : P_zend_refcounted ); - 3 : ( str : Pzend_string ); - 4 : ( arr : Pzend_array ); - 5 : ( obj : Pzend_object ); - 6 : ( res : Pzend_resource ); - 7 : ( ref : P_zend_reference ); - 8 : ( ast : P_zend_ast_ref ); - 9 : ( zv : Pzval ); - 10 : ( ptr : pointer ); - 11 : ( ce : P_zend_class_entry ); - 12 : ( func : P_zend_function ); - 13 : ( ww : Packed record - w1 : cardinal; - w2 : cardinal; - end ); - end; - {$ELSE} +{$IFNDEF PHP7} +Pzvalue_value = ^zvalue_value; zvalue_value = record case longint of 0: (lval: zend_long); @@ -985,12 +975,8 @@ zvalue_value = record 4 : (obj : _zend_object_value); {$ENDIF} end; - {$ENDIF} - {$IFNDEF PHP700} pppzval = ^ppzval; ppzval = ^pzval; - {$ENDIF} - {$IFDEF PHP4} Pzval = ^zval; zval = record @@ -1001,33 +987,8 @@ zval = record end; Tzval = zval; {$ELSE} + pzval = ^zval; - {$IFDEF PHP7} - _zval_struct = Packed record - value : zend_value; - u1 : Packed record - case longint of - 0 : ( v : record - _type : zend_uchar; - type_flags : zend_uchar; - const_flags : zend_uchar; - reserved : zend_uchar; - end ); - 1 : ( type_info : cardinal ); - end; - u2 : Packed record - case longint of - 0 : ( var_flags : LongWord ); - 1 : ( next : cardinal ); - 2 : ( cache_slot : cardinal ); - 3 : ( lineno : cardinal ); - 4 : ( num_args : cardinal ); - 5 : ( fe_pos : cardinal ); - 6 : ( fe_iter_idx : cardinal ); - end; - end; - zval = _zval_struct; - {$ENDIF} zval = record value : zvalue_value; refcount : zend_uint; @@ -1035,9 +996,10 @@ zval = record is_ref : byte; end; {$ENDIF} +{$ENDIF} ppzval_array = ^pzval_array; - pzval_array = array of {$IFNDEF PHP700} ppzval{$ELSE} pzval{$ENDIF}; + pzval_array = array of ppzval; pzval_array_ex = array of pzval; @@ -1213,6 +1175,7 @@ _zend_arg_info = record PZendArgInfo = ^TZendArgInfo; {$ENDIF} + {$IFNDEF PHP7} Pzend_function_entry = ^Tzend_function_entry; zend_function_entry = record fname: zend_pchar; @@ -1239,6 +1202,7 @@ _zend_function_entry = record num_args : uint; flags : uint; end; + {$ENDIF} Pzend_module_entry = ^Tzend_module_entry; p_zend_module_entry = ^_zend_module_entry; _zend_module_entry = record @@ -1445,12 +1409,12 @@ zend_compiler_globals = record active_op_array : pointer; - function_table : PHashTable; // function symbol table - class_table : PHashTable; // class table + function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; // function symbol table + class_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; // class table - filenames_table : THashTable; + filenames_table : {$IFDEF PHP7} zend_array {$ELSE} THashTable{$ENDIF}; - auto_globals : PHashTable; + auto_globals : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; in_compilation : zend_bool; short_tags : zend_bool; @@ -1520,7 +1484,7 @@ type _zend_property_info = record Pzend_executor_globals = ^zend_executor_globals; zend_executor_globals = record - return_value_ptr_ptr : {$IFNDEF PHP700} ppzval{$ELSE} pzval{$ENDIF}; + return_value_ptr_ptr : {$IFNDEF PHP7} ppzval{$ELSE} pzval{$ENDIF}; uninitialized_zval : zval; uninitialized_zval_ptr : pzval; @@ -1543,9 +1507,9 @@ zend_executor_globals = record {$ENDIF} active_symbol_table : PHashTable; - symbol_table : THashTable; // main symbol table + symbol_table : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; // main symbol table - included_files : THashTable; // files already included */ + included_files : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; // files already included */ {$IFDEF PHP4} bailout : jump_buf; @@ -1559,9 +1523,9 @@ zend_executor_globals = record active_op_array : pointer; - function_table : PHashTable; // function symbol table */ - class_table : PHashTable; // class table - zend_constants : PHashTable; // constants table */ + function_table : {$IFDEF PHP7}Pzval{$ELSE}PHashTable{$ENDIF}; // function symbol table */ + class_table : {$IFDEF PHP7}Pzval{$ELSE}PHashTable{$ENDIF}; // class table + zend_constants : {$IFDEF PHP7}Pzval{$ELSE}PHashTable{$ENDIF}; // constants table */ {$IFDEF PHP5} scope : pointer; @@ -1594,8 +1558,8 @@ zend_executor_globals = record timed_out : zend_bool; - regular_list : THashTable; - persistent_list : ThashTable; + regular_list : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; + persistent_list : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; argument_stack : zend_ptr_stack; diff --git a/Source/hzend_types.pas b/Source/hzend_types.pas new file mode 100644 index 0000000..b24c349 --- /dev/null +++ b/Source/hzend_types.pas @@ -0,0 +1,3024 @@ +unit hzend_types; + +interface + +uses Winapi.Windows; + +var + _TestCreate:Pointer; + +const +{#define IS_UNDEF 0 +#define IS_NULL 1 +#define IS_FALSE 2 +#define IS_TRUE 3 +#define IS_LONG 4 +#define IS_DOUBLE 5 +#define IS_STRING 6 +#define IS_ARRAY 7 +#define IS_OBJECT 8 +#define IS_RESOURCE 9 +#define IS_REFERENCE 10} + + E_ERROR = 1 shl 0; + E_WARNING = 1 shl 1; + E_PARSE = 1 shl 2; + E_NOTICE = 1 shl 3; + E_CORE_ERROR = 1 shl 4; + E_CORE_WARNING = 1 shl 5; + E_COMPILE_ERROR = 1 shl 6; + E_COMPILE_WARNING = 1 shl 7; + E_USER_ERROR = 1 shl 8; + E_USER_WARNING = 1 shl 9; + E_USER_NOTICE = 1 shl 10; + E_STRICT = 1 shl 11; + E_RECOVERABLE_ERROR = 1 shl 12; + E_DEPRECATED = 1 shl 13; + E_USER_DEPRECATED = 1 shl 14; + E_ALL = (((((((((((((E_ERROR or E_WARNING) or E_PARSE) or E_NOTICE) or E_CORE_ERROR) or E_CORE_WARNING) or E_COMPILE_ERROR) or E_COMPILE_WARNING) or E_USER_ERROR) or E_USER_WARNING) or E_USER_NOTICE) or E_RECOVERABLE_ERROR) or E_DEPRECATED) or E_USER_DEPRECATED) or E_STRICT; + E_CORE = E_CORE_ERROR or E_CORE_WARNING; + + + ZEND_INI_USER = 1 shl 0; + ZEND_INI_PERDIR = 1 shl 1; + ZEND_INI_SYSTEM = 1 shl 2; + ZEND_INI_ALL = (ZEND_INI_USER or ZEND_INI_PERDIR or ZEND_INI_SYSTEM); + + + ZEND_INI_DISPLAY_ORIG = 1 ; + ZEND_INI_DISPLAY_ACTIVE= 2 ; + + ZEND_INI_STAGE_STARTUP = 1 or 0; + ZEND_INI_STAGE_SHUTDOWN = 1 or 1; +ZEND_INI_STAGE_ACTIVATE = 1 or 2; + ZEND_INI_STAGE_DEACTIVATE = 1 or 3; +ZEND_INI_STAGE_RUNTIME = 1 or 4; +ZEND_INI_STAGE_HTACCESS = 1 or 5; + + + IS_UNDEF = 0 ; + IS_NULL = 1 ; + IS_FALSE = 2 ; + IS_TRUE = 3 ; + IS_LONG = 4 ; + IS_DOUBLE = 5 ; + IS_STRING = 6 ; + IS_ARRAY = 7 ; + IS_OBJECT = 8 ; + IS_RESOURCE = 9 ; + IS_REFERENCE = 10 ; + + + IS_CONSTANT = 11 ; + IS_CONSTANT_AST = 12 ; + + + IS_BOOL = 13 ; + IS_CALLABLE = 14 ; + + IS_INDIRECT = 15 ; + IS_PTR = 17 ; + // IS_BOOL = 4; + + IS_TYPE_CONSTANT = (1 SHL 0); + IS_TYPE_IMMUTABLE = (1 SHL 1) ; + IS_TYPE_REFCOUNTED = (1 SHL 2) ; +IS_TYPE_COLLECTABLE = (1 SHL 3); + IS_TYPE_COPYABLE = (1 SHL 4) ; + IS_TYPE_SYMBOLTABLE = (1 SHL 5) ; + +Z_TYPE_FLAGS_SHIFT = 8 ; +Z_CONST_FLAGS_SHIFT = 16; + + + + + + IS_STRING_EX = IS_STRING or ((IS_TYPE_REFCOUNTED or IS_TYPE_COPYABLE) shl Z_TYPE_FLAGS_SHIFT); + + + + SUCCESS = 0; + FAILURE = -1; + + + + HASH_UPDATE = 1 SHL 0; + HASH_ADD = 1 SHL 1; + HASH_NEXT_INSERT = 1 SHL 2; + + HASH_DEL_KEY = 0; + HASH_DEL_INDEX = 1; + HASH_DEL_KEY_QUICK = 2; + + ZEND_AST_SPECIAL_SHIFT = 6; +ZEND_AST_IS_LIST_SHIFT = 7; +ZEND_AST_NUM_CHILDREN_SHIFT = 8; + + PHP_API_VERSION = 20151012 ; + YYDEBUG = 0 ; + PHP_DEFAULT_CHARSET = 'UTF-8'; + + MODULE_PERSISTENT = 1; + MODULE_TEMPORARY = 2; + + SAPI_HEADER_ADD = 1 shr 0; + + SAPI_HEADER_SENT_SUCCESSFULLY = 1 ; +SAPI_HEADER_DO_SEND = 2 ; + SAPI_HEADER_SEND_FAILED = 3 ; + + SAPI_DEFAULT_MIMETYPE = 'text/html'; + SAPI_DEFAULT_CHARSET = PHP_DEFAULT_CHARSET; + SAPI_PHP_VERSION_HEADER = 'X-Powered-By: PHP/" PHP_VERSION'; + + +type + pppointer = ^ppointer; + + + + + + _zend_ast_kind = (ZEND_AST_ZVAL_ = 1 shl ZEND_AST_SPECIAL_SHIFT,ZEND_AST_ZNODE_,ZEND_AST_FUNC_DECL, + ZEND_AST_CLOSURE,ZEND_AST_METHOD,ZEND_AST_CLASS, + ZEND_AST_ARG_LIST = 1 shl ZEND_AST_IS_LIST_SHIFT,ZEND_AST_LIST_,ZEND_AST_ARRAY, + ZEND_AST_ENCAPS_LIST,ZEND_AST_EXPR_LIST, + ZEND_AST_STMT_LIST,ZEND_AST_IF,ZEND_AST_SWITCH_LIST, + ZEND_AST_CATCH_LIST,ZEND_AST_PARAM_LIST, + ZEND_AST_CLOSURE_USES,ZEND_AST_PROP_DECL, + ZEND_AST_CONST_DECL,ZEND_AST_CLASS_CONST_DECL, + ZEND_AST_NAME_LIST,ZEND_AST_TRAIT_ADAPTATIONS, + ZEND_AST_USE,ZEND_AST_MAGIC_CONST = 0 shl ZEND_AST_NUM_CHILDREN_SHIFT, + ZEND_AST_TYPE,ZEND_AST_VAR = 1 shl ZEND_AST_NUM_CHILDREN_SHIFT,ZEND_AST_CONST, + ZEND_AST_UNPACK,ZEND_AST_UNARY_PLUS,ZEND_AST_UNARY_MINUS, + ZEND_AST_CAST,ZEND_AST_EMPTY,ZEND_AST_ISSET, + ZEND_AST_SILENCE,ZEND_AST_SHELL_EXEC,ZEND_AST_CLONE, + ZEND_AST_EXIT,ZEND_AST_PRINT,ZEND_AST_INCLUDE_OR_EVAL, + ZEND_AST_UNARY_OP,ZEND_AST_PRE_INC,ZEND_AST_PRE_DEC, + ZEND_AST_POST_INC,ZEND_AST_POST_DEC,ZEND_AST_YIELD_FROM, + ZEND_AST_GLOBAL,ZEND_AST_UNSET,ZEND_AST_RETURN, + ZEND_AST_LABEL,ZEND_AST_REF_,ZEND_AST_HALT_COMPILER, + ZEND_AST_ECHO,ZEND_AST_THROW,ZEND_AST_GOTO, + ZEND_AST_BREAK,ZEND_AST_CONTINUE,ZEND_AST_DIM = 2 shl ZEND_AST_NUM_CHILDREN_SHIFT, + ZEND_AST_PROP,ZEND_AST_STATIC_PROP,ZEND_AST_CALL, + ZEND_AST_CLASS_CONST,ZEND_AST_ASSIGN,ZEND_AST_ASSIGN_REF, + ZEND_AST_ASSIGN_OP,ZEND_AST_BINARY_OP,ZEND_AST_GREATER, + ZEND_AST_GREATER_EQUAL,ZEND_AST_AND,ZEND_AST_OR, + ZEND_AST_ARRAY_ELEM,ZEND_AST_NEW,ZEND_AST_INSTANCEOF, + ZEND_AST_YIELD,ZEND_AST_COALESCE,ZEND_AST_STATIC, + ZEND_AST_WHILE,ZEND_AST_DO_WHILE,ZEND_AST_IF_ELEM, + ZEND_AST_SWITCH,ZEND_AST_SWITCH_CASE,ZEND_AST_DECLARE, + ZEND_AST_CONST_ELEM,ZEND_AST_USE_TRAIT, + ZEND_AST_TRAIT_PRECEDENCE,ZEND_AST_METHOD_REFERENCE, + ZEND_AST_NAMESPACE,ZEND_AST_USE_ELEM,ZEND_AST_TRAIT_ALIAS, + ZEND_AST_GROUP_USE,ZEND_AST_METHOD_CALL = 3 shl ZEND_AST_NUM_CHILDREN_SHIFT, + ZEND_AST_STATIC_CALL,ZEND_AST_CONDITIONAL, + ZEND_AST_TRY,ZEND_AST_CATCH,ZEND_AST_PARAM, + ZEND_AST_PROP_ELEM,ZEND_AST_FOR = 4 shl ZEND_AST_NUM_CHILDREN_SHIFT,ZEND_AST_FOREACH + ); + plongint = ^longint; + + P_zend_objects_store = ^_zend_objects_store; + Pzend_objects_store = ^zend_objects_store; + uint32_t = CARDINAL; + + + zend_pchar = {$IFDEF PHP_UNICE}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; + zend_pstr = {$IFDEF PHP_UNICE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; + + //zend_uchar = {$IFDEF PHP_UNICE}Utf8Char{$ELSE}AnsiChar{$ENDIF}; + zend_ustr = {$IFDEF PHP_UNICE}Utf8String{$ELSE}AnsiString{$ENDIF}; + + + + + + + + + P_zend_object = ^_zend_object; + PP_zend_object = ^P_zend_object; + PPP_zend_object = ^PP_zend_object; + Pzend_object = ^_zend_object; + PPzend_object = ^P_zend_object; + PPPzend_object = ^PP_zend_object; + + P_zend_refcounted = ^_zend_refcounted; + P_zend_string = ^_zend_string; + PP_zend_string = ^P_zend_string; + PPP_zend_string = ^PP_zend_string; + Pzend_string = ^_zend_string; + PPzend_string = ^P_zend_string; + PPPzend_string = ^PP_zend_string; + + Pzend_mm_chunk_alloc_t = ^zend_mm_chunk_alloc_t; + P_zend_resource = ^_zend_resource; + PP_zend_resource =^P_zend_resource; + PPP_zend_resource =^PP_zend_resource; + Pzend_resource = ^_zend_resource; + PPzend_resource =^P_zend_resource; + PPPzend_resource =^PP_zend_resource; + P_zend_ast_ref = ^_zend_ast_ref; + P_zend_reference = ^_zend_reference; + P_zend_array = ^_zend_array; + PP_zend_array = ^P_zend_array; + PPP_zend_array = ^PP_zend_array; + Pzend_array = ^_zend_array; + PPzend_array = ^P_zend_array; + PPPzend_array = ^PP_zend_array; + + P_zval_struct = ^_zval_struct; + P_zend_function = ^_zend_function; + PP_zend_function = ^P_zend_function; + PPP_zend_function = ^PP_zend_function; + Pzend_function = ^_zend_function; + PPzend_function = ^P_zend_function; + PPPzend_function = ^PP_zend_function; + P_zend_value = ^_zend_value; + Pzend_ast_kind = ^zend_ast_kind; + zend_ast_kind = Word; + Pzend_ast_attr = ^zend_ast_attr; + zend_ast_attr = Word; + Pzend_bool = ^zend_bool; + zend_bool = byte; + Pzend_uchar = ^zend_uchar; + zend_uchar = byte; + zend_long = integer; + Pzend_long = ^zend_long; + PPzend_long = ^Pzend_long; + Pzend_stack = ^zend_stack; + P_zend_stack = ^_zend_stack; + + + zend_ulong = FixedUInt; + P_zend_ulong = ^zend_ulong; + zend_off_t = integer; + Pzend_off_t = ^zend_off_t; + PPzend_off_t = ^Pzend_off_t; + P_zend_mm_huge_list = ^_zend_mm_huge_list; + + P_zend_mm_free_slot = ^_zend_mm_free_slot; + P_zend_mm_bin = ^_zend_mm_bin; + P_zend_mm_page = ^_zend_mm_page; + P_zend_mm_chunk = ^_zend_mm_chunk; + P_zend_mm_heap = ^_zend_mm_heap; + PP_zend_mm_heap = ^P_zend_mm_heap; + PPP_zend_mm_heap = ^PP_zend_mm_heap; + Pzend_mm_heap = ^_zend_mm_heap; + PPzend_mm_heap = ^P_zend_mm_heap; + PPPzend_mm_heap = ^PP_zend_mm_heap; + P_zend_mm_debug_info = ^_zend_mm_debug_info; + + Pzend_ini_entry_def = ^zend_ini_entry_def; + + P_zend_ini_entry = ^_zend_ini_entry; + P_zend_ini_entry_def = ^_zend_ini_entry_def; + + zend_uint = uint; + zend_ushort = ushort; + Pzend_value = ^zend_value; + Pzend_file_handle = ^zend_file_handle; + P_zend_ast = ^_zend_ast; + P_zend_ast_list = ^_zend_ast_list; + Pzend_ast_list = ^zend_ast_list; + Pzend_ast_decl = ^zend_ast_decl; + P_zend_ast_zval = ^_zend_ast_zval; + Pzend_ast_zval = ^zend_ast_zval; + P_zend_ast_decl = ^_zend_ast_decl; + PHashTable = Pzend_array; + PPHashTable = ^PHashTable; + Pzend_intptr_t = ^zend_intptr_t; + Pzend_uintptr_t = ^zend_uintptr_t; + pzval = ^zval; + ppzval = ^pzval; + pppzval = ^ppzval; + Pzend_utility_values = ^zend_utility_values; + Pzend_utility_functions = ^zend_utility_functions; + Pzend_trait_alias = ^zend_trait_alias; + Pzend_trait_precedence = ^zend_trait_precedence; + Pzend_trait_method_reference = ^zend_trait_method_reference; + PZEND_RESULT_CODE = ^ZEND_RESULT_CODE; + P_zend_serialize_data = ^_zend_serialize_data; + P_zend_unserialize_data = ^_zend_unserialize_data; + P_zend_trait_method_reference = ^_zend_trait_method_reference; + P_zend_trait_precedence = ^_zend_trait_precedence; + P_zend_trait_alias = ^_zend_trait_alias; + P_zend_class_entry = ^_zend_class_entry; + PP_zend_class_entry = ^P_zend_class_entry; + PPP_zend_class_entry = ^PP_zend_class_entry; + Pzend_class_entry = ^_zend_class_entry; + PPzend_class_entry = ^P_zend_class_entry; + PPPzend_class_entry = ^PP_zend_class_entry; + + P_zend_utility_functions = ^_zend_utility_functions; + P_zend_utility_values = ^_zend_utility_values; + Pzend_error_handling_t = ^zend_error_handling_t; + Pzend_error_handling = ^zend_error_handling; + Pzend_stream_type = ^zend_stream_type; + + P_zend_op = ^_zend_op; + P_zend_execute_data = ^_zend_execute_data; + PP_zend_execute_data = ^P_zend_execute_data; + PPP_zend_execute_data = ^PP_zend_execute_data; + Pzend_execute_data = ^_zend_execute_data; + PPzend_execute_data = ^P_zend_execute_data; + PPPzend_execute_data = ^PP_zend_execute_data; + P_zend_function_entry = ^_zend_function_entry; + P_zend_fcall_info_cache = ^_zend_fcall_info_cache; + Pzend_function_entry = ^zend_function_entry; + Pzend_declarables = ^zend_declarables; + Pzend_ast_znode = ^zend_ast_znode; + Pznode = ^znode; + Pznode_op = ^znode_op; + Pzend_stream = ^zend_stream; + Pzend_mmap = ^zend_mmap; + Pzend_fcall_info_cache = ^zend_fcall_info_cache; + P_zend_mmap = ^_zend_mmap; + P_zend_stream = ^_zend_stream; + P_zend_file_handle = ^_zend_file_handle; + P_znode_op = ^_znode_op; + P_znode = ^_znode; + P_zend_ast_znode = ^_zend_ast_znode; + P_zend_declarables = ^_zend_declarables; + P_zend_oparray_context = ^_zend_oparray_context; + Pzend_internal_function_info = ^zend_internal_function_info; + Pzend_arg_info = ^zend_arg_info; + Pzend_internal_arg_info = ^zend_internal_arg_info; + Pzend_property_info = ^zend_property_info; + Pzend_try_catch_element = ^zend_try_catch_element; + Pzend_label = ^zend_label; + Pzend_closure = ^zend_closure; + P_zend_closure = ^_zend_closure; + P_zend_multibyte_functions = ^_zend_multibyte_functions; + Pzend_encoding_internal_encoding_getter = ^zend_encoding_internal_encoding_getter; + Pzend_encoding_detector = ^zend_encoding_detector; + + Pzend_brk_cont_element = ^zend_brk_cont_element; + Pzend_parser_stack_elem = ^zend_parser_stack_elem; + Pzend_file_context = ^zend_file_context; + Pzend_oparray_context = ^zend_oparray_context; + P_zend_file_context = ^_zend_file_context; + P_zend_parser_stack_elem = ^_zend_parser_stack_elem; + P_zend_brk_cont_element = ^_zend_brk_cont_element; + P_zend_label = ^_zend_label; + P_zend_try_catch_element = ^_zend_try_catch_element; + P_zend_property_info = ^_zend_property_info; + P_zend_internal_arg_info = ^_zend_internal_arg_info; + P_zend_arg_info = ^_zend_arg_info; + P_zend_internal_function_info = ^_zend_internal_function_info; + P_zend_op_array = ^_zend_op_array; + PP_zend_op_array = ^P_zend_op_array; + PPP_zend_op_array = ^PP_zend_op_array; + Pzend_op_array = ^_zend_op_array; + PPzend_op_array = ^P_zend_op_array; + PPPzend_op_array = ^PP_zend_op_array; + PHashTableIterator = ^HashTableIterator; + P_zend_object_handlers = ^_zend_object_handlers; + PBucket = ^Bucket; + Pzend_refcounted_h = ^zend_refcounted_h; + Pzend_auto_global = ^zend_auto_global; + Pzend_internal_function = ^zend_internal_function; + P_zend_internal_function = ^_zend_internal_function; + P_zend_call_kind = ^_zend_call_kind; + P_zend_auto_global = ^_zend_auto_global; + P_zend_refcounted_h = ^_zend_refcounted_h; + P_Bucket = ^_Bucket; + PHashPosition = ^HashPosition; + P_HashTableIterator = ^_HashTableIterator; + Pzend_object_read_property_t = ^zend_object_read_property_t; + Pzend_object_read_dimension_t = ^zend_object_read_dimension_t; + Pzend_object_get_property_ptr_ptr_t = ^zend_object_get_property_ptr_ptr_t; + Pzend_object_get_t = ^zend_object_get_t; + Pzend_object_get_properties_t = ^zend_object_get_properties_t; + Pzend_object_get_method_t = ^zend_object_get_method_t; + Pzend_object_get_constructor_t = ^zend_object_get_constructor_t; + Pzend_object_get_debug_info_t = ^zend_object_get_debug_info_t; + Pzend_call_kind = ^zend_call_kind; + Pzend_object_clone_obj_t = ^zend_object_clone_obj_t; + Pzend_object_get_class_name_t = ^zend_object_get_class_name_t; + Pzend_object_get_gc_t = ^zend_object_get_gc_t; + P_zend_class_iterator_funcs = ^_zend_class_iterator_funcs; + P_zend_object_iterator_funcs = ^_zend_object_iterator_funcs; + Pzend_object_iterator_funcs = ^zend_object_iterator_funcs; + P_zend_arena = ^_zend_arena; + Pzend_leak_info = ^zend_leak_info; + Pzend_mm_debug_info = ^zend_mm_debug_info; + Pzend_mm_handlers = ^zend_mm_handlers; + P_zend_mm_storage = ^_zend_mm_storage; + P_zend_mm_handlers = ^_zend_mm_handlers; + P_zend_leak_info = ^_zend_leak_info; + P_zend_object_iterator = ^_zend_object_iterator; + PP_zend_object_iterator = ^P_zend_object_iterator; + PPP_zend_object_iterator = ^PP_zend_object_iterator; + Pzend_object_iterator = ^_zend_object_iterator; + PPzend_object_iterator = ^P_zend_object_iterator; + PPPzend_object_iterator = ^PP_zend_object_iterator; + Pzend_class_iterator_funcs = ^zend_class_iterator_funcs; + P_zend_module_dep = ^_zend_module_dep; + P_zend_module_entry = ^_zend_module_entry; + PP_zend_module_entry = ^P_zend_module_entry; + PPP_zend_module_entry = ^PP_zend_module_entry; + Pzend_module_entry = ^_zend_module_entry; + PPzend_module_entry = ^P_zend_module_entry; + PPPzend_module_entry = ^PP_zend_module_entry; + psmart_str = ^Tsmart_str; + + Psapi_globals_struct = ^sapi_globals_struct; + Psapi_header_struct = ^sapi_header_struct; + Psapi_headers_struct = ^sapi_headers_struct; + Pzend_mm_chunk_free_t = ^zend_mm_chunk_free_t; + Pzend_mm_chunk_truncate_t = ^zend_mm_chunk_truncate_t; + Pzend_mm_chunk_extend_tt = ^zend_mm_chunk_extend_t; + Psapi_request_info = ^sapi_request_info; + P_sapi_globals_struct = ^_sapi_globals_struct; + Psapi_header_line = ^sapi_header_line; + Psapi_header_op_enum = ^sapi_header_op_enum; + P_sapi_module_struct = ^_sapi_module_struct; + PP_sapi_module_struct = ^P_sapi_module_struct; + PPP_sapi_module_struct = ^PP_sapi_module_struct; + Psapi_module_struct = ^_sapi_module_struct; + PPsapi_module_struct = ^P_sapi_module_struct; + PPPsapi_module_struct = ^PP_sapi_module_struct; + P_sapi_post_entry = ^_sapi_post_entry; + PP_sapi_post_entry = ^P_sapi_post_entry; + PPP_sapi_post_entry = ^PP_sapi_post_entry; + Psapi_post_entry = ^_sapi_post_entry; + PPsapi_post_entry = ^P_sapi_post_entry; + PPPsapi_post_entry = ^PP_sapi_post_entry; + Pphp_stream_dirent = ^php_stream_dirent; + Pphp_stream_ops = ^php_stream_ops; + P_php_stream = ^_php_stream; + PP_php_stream = ^P_php_stream; + PPP_php_stream = ^PP_php_stream; + Pphp_stream = ^_php_stream; + PPphp_stream = ^P_php_stream; + PPPphp_stream = ^PP_php_stream; + P_php_stream_wrapper = ^_php_stream_wrapper; + PP_php_stream_wrapper = ^P_php_stream_wrapper; + PPP_php_stream_wrapper = ^PP_php_stream_wrapper; + Pphp_stream_wrapper = ^_php_stream_wrapper; + PPphp_stream_wrapper = ^P_php_stream_wrapper; + PPPphp_stream_wrapper = ^PP_php_stream_wrapper; + P_php_stream_wrapper_ops = ^_php_stream_wrapper_ops; + P_php_stream_ops = ^_php_stream_ops; + P_php_stream_statbuf = ^_php_stream_statbuf; + Pzend_llist = ^zend_llist; + Pzend_llist_element = ^zend_llist_element; + P_zend_llist_element = ^_zend_llist_element; + P_zend_llist = ^_zend_llist; + Pzend_llist_position = ^zend_llist_position; + Pphp_stream_filter_ops = ^php_stream_filter_ops; + Pphp_stream_filter_chain = ^php_stream_filter_chain; + Pphp_stream_filter_factory = ^php_stream_filter_factory; + P_php_stream_filter_factory = ^_php_stream_filter_factory; + P_php_stream_filter = ^_php_stream_filter; + PP_php_stream_filter = ^P_php_stream_filter; + PPP_php_stream_filter = ^PP_php_stream_filter; + Pphp_stream_filter = ^_php_stream_filter; + PPphp_stream_filter = ^P_php_stream_filter; + PPPphp_stream_filter = ^PP_php_stream_filter; + P_php_stream_filter_chain = ^_php_stream_filter_chain; + P_php_stream_filter_ops = ^_php_stream_filter_ops; + Pphp_stream_filter_status_t = ^php_stream_filter_status_t; + P_php_stream_bucket_brigade = ^_php_stream_bucket_brigade; + PP_php_stream_bucket_brigade = ^P_php_stream_bucket_brigade; + PPP_php_stream_bucket_brigade = ^PP_php_stream_bucket_brigade; + Pphp_stream_bucket_brigade = ^_php_stream_bucket_brigade; + PPphp_stream_bucket_brigade = ^P_php_stream_bucket_brigade; + PPPphp_stream_bucket_brigade = ^PP_php_stream_bucket_brigade; + P_php_stream_bucket = ^_php_stream_bucket; + PP_php_stream_bucket = ^P_php_stream_bucket; + PPP_php_stream_bucket = ^PP_php_stream_bucket; + Pphp_stream_bucket = ^_php_stream_bucket; + PPphp_stream_bucket = ^P_php_stream_bucket; + PPPphp_stream_bucket = ^PP_php_stream_bucket; + Puid_t = ^uid_t; + uid_t = longint; + Pphp_stream_wrapper_ops = ^php_stream_wrapper_ops; zend_encoding = pointer ; + Pzend_encoding= ^zend_encoding; + PPzend_encoding = ^Pzend_encoding; + PPPzend_encoding = ^PPzend_encoding; + Pgid_t = ^gid_t; + gid_t = longint; +Pzend_ptr_stack = ^zend_ptr_stack; + P_zend_ptr_stack = ^_zend_ptr_stack; + Pzend_free_op = ^zend_free_op; + zend_free_op = Pzval; + + Pzend_vm_stack = ^_zend_vm_stack; + Pzend_ini_parser_param = ^zend_ini_parser_param; + P_zend_ini_parser_param = ^_zend_ini_parser_param; + + P_zend_php_scanner_globals = ^_zend_php_scanner_globals; + Pzend_php_scanner_event = ^zend_php_scanner_event; + zend_php_scanner_event = (ON_TOKEN,ON_FEEDBACK,ON_STOP); + P_zend_ini_scanner_globals = ^_zend_ini_scanner_globals; + P_zend_executor_globals = ^_zend_executor_globals; + P_zend_compiler_globals = ^_zend_compiler_globals; + + + Pcaddr_t = ^caddr_t; + caddr_t = zend_pchar; + _zend_fcall_info_cache = record + initialized : zend_bool; + function_handler : P_zend_function; + calling_scope : P_zend_class_entry; + called_scope : P_zend_class_entry; + _object : P_zend_object; + end; + zend_fcall_info_cache = _zend_fcall_info_cache; + Pphp_stream_statbuf = ^php_stream_statbuf; + P_php_stream_notifier = ^_php_stream_notifier; + P_php_stream_context = ^_php_stream_context; + PP_php_stream_context = ^P_php_stream_context; + PPP_php_stream_context = ^PP_php_stream_context; + Pphp_stream_context = ^_php_stream_context; + PPphp_stream_context = ^P_php_stream_context; + PPPphp_stream_context = ^PP_php_stream_context; + + P_php_stream_dirent = ^_php_stream_dirent; + + PP_zend_llist_element = ^P_zend_llist_element; + PPP_zend_llist_element = ^PP_zend_llist_element; + + zend_stat_t = pointer; + P_zend_stat_t =^zend_stat_t; + PP_zend_stat_t = ^P_zend_stat_t; + PPP_zend_stat_t = ^PP_zend_stat_t; + _zend_value = Packed record + case longint of + 0 : ( lval : zend_long ); + 1 : ( dval : double ); + 2 : ( counted : P_zend_refcounted ); + 3 : ( str : Pzend_string ); + 4 : ( arr : Pzend_array ); + 5 : ( obj : Pzend_object ); + 6 : ( res : Pzend_resource ); + 7 : ( ref : P_zend_reference ); + 8 : ( ast : P_zend_ast_ref ); + 9 : ( zv : Pzval ); + 10 : ( ptr : pointer ); + 11 : ( ce : P_zend_class_entry ); + 12 : ( func : P_zend_function ); + 13 : ( ww : Packed record + w1 : cardinal; + w2 : cardinal; + end ); + end; + zend_value = _zend_value; + + _zval_struct = Packed record + value : zend_value; + u1 : Packed record + case longint of + 0 : ( v : record + _type : zend_uchar; + type_flags : zend_uchar; + const_flags : zend_uchar; + reserved : zend_uchar; + end ); + 1 : ( type_info : cardinal ); + end; + u2 : Packed record + case longint of + 0 : ( var_flags : LongWord ); + 1 : ( next : cardinal ); + 2 : ( cache_slot : cardinal ); + 3 : ( lineno : cardinal ); + 4 : ( num_args : cardinal ); + 5 : ( fe_pos : cardinal ); + 6 : ( fe_iter_idx : cardinal ); + end; + end; + zval = _zval_struct; + + + compare_func_t = function (_para1:pointer; _para2:pointer):longint;cdecl; + + swap_func_t = procedure (_para1:pointer; _para2:pointer);cdecl; + + sort_func_t = procedure (_para1:pointer; _para2:size_t; _para3:size_t; _para4:compare_func_t; _para5:swap_func_t);cdecl; + + dtor_func_t = procedure (pDest:pzval);cdecl; + + copy_ctor_func_t = procedure (pElement:pzval);cdecl; + + + P_zend_vm_stack = ^_zend_vm_stack; + + _zend_vm_stack = record + top : Pzval; + _end : Pzval; + prev : POINTER; + end; + + + _zend_refcounted_h = record + refcount : cardinal; + u : record + case longint of + 0 : ( v : record + _type : zend_uchar; + flags : zend_uchar; + gc_info : word; + end ); + 1 : ( type_info : cardinal ); + end; + end; + + + zend_refcounted_h = _zend_refcounted_h; + + _zend_refcounted = record + gc : zend_refcounted_h; + end; + zend_refcounted = _zend_refcounted; + + + + _zend_string = record + gc : zend_refcounted_h; + h : zend_ulong; + len : size_t; + val : zend_pchar; + end; + zend_string = _zend_string; + + _Bucket = record + val : zval; + h : zend_ulong; + key : P_zend_string; + end; + Bucket = _Bucket; + _zend_ini_entry = record + name : P_zend_string; + on_modify : pointer; + mh_arg1 : pointer; + mh_arg2 : pointer; + mh_arg3 : pointer; + value : P_zend_string; + orig_value : P_zend_string; + displayer : procedure (ini_entry:p_zend_ini_entry; _type:longint);cdecl; + modifiable : longint; + orig_modifiable : longint; + modified : longint; + module_number : longint; + end; + + _zend_ini_entry_def = record + name : zend_pchar; + on_modify : pointer; + mh_arg1 : pointer; + mh_arg2 : pointer; + mh_arg3 : pointer; + value : zend_pchar; + displayer : procedure (ini_entry:p_zend_ini_entry; _type:longint);cdecl; + modifiable : longint; + name_length : uint; + value_length : uint; + end; + zend_ini_entry_def = _zend_ini_entry_def; +zend_ini_parser_cb_t = procedure (arg1:pzval; arg2:pzval; arg3:pzval; callback_type:longint; arg:pointer);cdecl; + + + + _zend_array = record + gc : zend_refcounted_h; + u : record + case longint of + 0 : ( v : record + flags : zend_uchar; + nApplyCount : zend_uchar; + nIteratorsCount : zend_uchar; + reserve : zend_uchar; + end ); + 1 : ( flags : cardinal ); + end; + nTableMask : cardinal; + arData : PBucket; + nNumUsed : cardinal; + nNumOfElements : cardinal; + nTableSize : cardinal; + nInternalPointer : cardinal; + nNextFreeElement : zend_long; + pDestructor : dtor_func_t; + end; + HashTable = _zend_array ; + zend_array = _zend_array; + + _zend_ast = record + kind : zend_ast_kind; + attr : zend_ast_attr; + lineno : Cardinal; + child : array[0..0] of P_zend_ast; + end; + + zend_ast = _zend_ast; + pzend_ast = ^zend_ast; + ppzend_ast = ^pzend_ast; + pppzend_ast = ^ppzend_ast; + + _zend_ast_list = record + kind : zend_ast_kind; + attr : zend_ast_attr; + lineno : Cardinal; + children : Cardinal; + child : array[0..0] of P_zend_ast; + end; + zend_ast_list = _zend_ast_list; + + + + + P_zend_fcall_info = ^_zend_fcall_info; + _zend_fcall_info = record + size : size_t; + function_table : PHashTable; + function_name : zval; + symbol_table : P_zend_array; + retval : Pzval; + params : Pzval; + _object : P_zend_object; + no_separation : zend_bool; + param_count : cardinal; + end; + zend_fcall_info = _zend_fcall_info; + Pzend_fcall_info = ^zend_fcall_info; + + + _zend_ast_zval = record + kind : zend_ast_kind; + attr : zend_ast_attr; + val : zval; + end; + zend_ast_zval = _zend_ast_zval; + + _zend_ast_decl = record + kind : zend_ast_kind; + attr : zend_ast_attr; + start_lineno : Cardinal; + end_lineno : Cardinal; + flags : Cardinal; + lex_pos : Pbyte; + doc_comment : P_zend_string; + name : P_zend_string; + child : array[0..3] of P_zend_ast; + end; + zend_ast_decl = _zend_ast_decl; + + zend_ast_process_t = procedure (ast:pzend_ast);cdecl; + + + zend_ast_apply_func = procedure (ast_ptr:pPzend_ast);cdecl; + + + + + + {$IFDEF _WIN64} + IntPtr = Int64; + UIntPtr = UInt64; + {$ELSE} + IntPtr = Longint; + UIntPtr = LongWord; + {$ENDIF} + + + + uintptr_t = Cardinal; + + + ZEND_RESULT_CODE = (SUCCESS_ = 0,FAILURE_ = -(1)); + + zend_intptr_t = intptr; + + zend_uintptr_t = uintptr_t; + //zend_object_handlers = _zend_object_handlers; + + + // Pzend_function = ^zend_function; + + + Pzend_mm_page_info = ^zend_mm_page_info; + zend_mm_page_info = uint32_t; + + + Pzend_mm_bitset = ^zend_mm_bitset; + zend_mm_bitset = zend_ulong; + + + + + + + + + _zend_serialize_data = record end; + + _zend_unserialize_data = record end; + + zend_serialize_data = _zend_serialize_data; + zend_unserialize_data = _zend_unserialize_data; + + _zend_trait_method_reference = record + method_name : P_zend_string; + ce : P_zend_class_entry; + class_name : P_zend_string; + end; + zend_trait_method_reference = _zend_trait_method_reference; + + + hgerhrh343erg = record + case longint of + 0 : ( ce : P_zend_class_entry ); + 1 : ( class_name : P_zend_string ); + end; + _zend_trait_precedence = record + trait_method : Pzend_trait_method_reference; + exclude_from_classes : ^hgerhrh343erg; + end; + zend_trait_precedence = _zend_trait_precedence; + + _zend_trait_alias = record + trait_method : Pzend_trait_method_reference; + alias : P_zend_string; + modifiers : Cardinal; + end; + zend_trait_alias = _zend_trait_alias; + + _zend_class_iterator_funcs = record + funcs : Pzend_object_iterator_funcs; + zf_new_iterator : P_zend_function; + zf_valid : P_zend_function; + zf_current : P_zend_function; + zf_key : P_zend_function; + zf_next : P_zend_function; + zf_rewind : P_zend_function; + end; + zend_class_iterator_funcs = _zend_class_iterator_funcs; + + _zend_class_entry = record + _type : char; + name : P_zend_string; + parent : P_zend_class_entry; + refcount : longint; + ce_flags : Cardinal; + default_properties_count : longint; + default_static_members_count : longint; + default_properties_table : Pzval; + default_static_members_table : Pzval; + static_members_table : Pzval; + function_table : HashTable; + properties_info : HashTable; + constants_table : HashTable; + _constructor : P_zend_function; + _destructor : P_zend_function; + clone : P_zend_function; + __get : P_zend_function; + __set : P_zend_function; + __unset : P_zend_function; + __isset : P_zend_function; + __call : P_zend_function; + __callstatic : P_zend_function; + __tostring : P_zend_function; + __debugInfo : P_zend_function; + serialize_func : P_zend_function; + unserialize_func : P_zend_function; + iterator_funcs : zend_class_iterator_funcs; + create_object : function (class_type:p_zend_class_entry):P_zend_object;cdecl; + get_iterator : function (ce:p_zend_class_entry; _object:pzval; by_ref:longint):P_zend_object_iterator;cdecl; + interface_gets_implemented : function (iface:p_zend_class_entry; class_type:p_zend_class_entry):longint;cdecl; + get_static_method : function (ce:p_zend_class_entry; method:p_zend_string):P_zend_function;cdecl; + serialize : function (_object:pzval; buffer:LPBYTE; buf_len:Psize_t; data:p_zend_serialize_data):longint;cdecl; + unserialize : function (_object:pzval; ce:p_zend_class_entry; buf:pbyte; buf_len:size_t; data:p_zend_unserialize_data):longint;cdecl; + num_interfaces : Cardinal; + num_traits : Cardinal; + interfaces : ^P_zend_class_entry; + traits : ^P_zend_class_entry; + trait_aliases : ^Pzend_trait_alias; + trait_precedences : ^Pzend_trait_precedence; + info : record + case longint of + 0 : ( user : record + filename : P_zend_string; + line_start : Cardinal; + line_end : Cardinal; + doc_comment : P_zend_string; + end ); + 1 : ( internal : record + builtin_functions : P_zend_function_entry; + module : P_zend_module_entry; + end ); + end; + end; + zend_class_entry = _zend_class_entry; + TZend_class_entry = _zend_class_entry; + + zend_stream_fsizer_t = function ( handle:pointer):size_t;cdecl; + + zend_stream_reader_t = function ( handle:pointer; buf:zend_pchar; len:size_t):size_t;cdecl; + + zend_stream_closer_t = procedure ( handle:pointer);cdecl; + + + + // __stat64 = zend_stat_t; + // stat = zend_stat_t; + + zend_stream_type = (ZEND_HANDLE_FILENAME,ZEND_HANDLE_FD,ZEND_HANDLE_FP, + ZEND_HANDLE_STREAM,ZEND_HANDLE_MAPPED); + +_zend_mmap = record + len : size_t; + pos : size_t; + map : pointer; + buf : zend_pchar; + old_handle : pointer; + old_closer : zend_stream_closer_t; +end; + zend_mmap = _zend_mmap; + + _zend_stream = record + handle : pointer; + isatty : longint; + mmap : zend_mmap; + reader : zend_stream_reader_t; + fsizer : zend_stream_fsizer_t; + closer : zend_stream_closer_t; + end; + zend_stream = _zend_stream; + + _zend_file_handle = record + handle : record + case longint of + 0 : ( fd : longint ); + 1 : ( fp : pointer ); + 2 : ( stream : zend_stream ); + end; + filename : zend_pchar; + opened_path : P_zend_string; + _type : zend_stream_type; + free_filename : zend_bool; + end; + zend_file_handle = _zend_file_handle; + + + _zend_utility_functions = record + error_function : procedure (_type:longint; error_filename:zend_pchar; error_lineno:uint; format:zend_pchar; args:va_list);cdecl; + printf_function : function (format:zend_pchar):size_t;cdecl varargs; + write_function : function (str:zend_pchar; str_length:size_t):size_t;cdecl; + fopen_function : function (filename:zend_pchar; opened_path:pP_zend_string):POINTER;cdecl; + message_handler : procedure (message:zend_long; data:pointer);cdecl; + block_interruptions : procedure ;cdecl; + unblock_interruptions : procedure ;cdecl; + get_configuration_directive : function (name:p_zend_string):Pzval;cdecl; + ticks_function : procedure (ticks:longint);cdecl; + on_timeout : procedure (seconds:longint);cdecl; + stream_open_function : function (filename:zend_pchar; handle:pzend_file_handle):longint;cdecl; + vspprintf_function : function (pbuf:PPchar; max_len:size_t; format:zend_pchar; ap:va_list):size_t;cdecl; + vstrpprintf_function : function (max_len:size_t; format:zend_pchar; ap:va_list):P_zend_string;cdecl; + getenv_function : function (name:zend_pchar; name_len:size_t):zend_pchar;cdecl; + resolve_path_function : function (filename:zend_pchar; filename_len:longint):P_zend_string;cdecl; + end; + zend_utility_functions = _zend_utility_functions; + + _zend_utility_values = record + import_use_extension : zend_pchar; + import_use_extension_length : uint; + html_errors : zend_bool; + end; + zend_utility_values = _zend_utility_values; + + zend_write_func_t = function (str:zend_pchar; str_length:size_t):longint;cdecl; + + + zend_error_handling_t = (EH_NORMAL = 0,EH_SUPPRESS,EH_THROW); + + zend_error_handling = record + handling : zend_error_handling_t; + exception : P_zend_class_entry; + user_handler : zval; + end; + + + + + + + _znode_op = record + case longint of + 0 : ( constant : cardinal ); + 1 : ( _var : cardinal ); + 2 : ( num : cardinal ); + 3 : ( opline_num : cardinal ); + 4 : ( jmp_offset : cardinal ); + 5 : ( zv : Pzval ); + end; + znode_op = _znode_op; + + _znode = record + op_type : zend_uchar; + flag : zend_uchar; + u : record + case longint of + 0 : ( op : znode_op ); + 1 : ( constant : zval ); + end; + end; + znode = _znode; + + _zend_ast_znode = record + kind : zend_ast_kind; + attr : zend_ast_attr; + lineno : Cardinal; + node : znode; + end; + zend_ast_znode = _zend_ast_znode; + + _zend_declarables = record + ticks : zend_long; + end; + zend_declarables = _zend_declarables; + + _zend_oparray_context = record + opcodes_size : Cardinal; + vars_size : longint; + literals_size : longint; + current_brk_cont : longint; + backpatch_count : longint; + in_finally : longint; + fast_call_var : Cardinal; + labels : PHashTable; + end; + zend_oparray_context = _zend_oparray_context; + + _zend_file_context = record + declarables : zend_declarables; + implementing_class : znode; + current_namespace : P_zend_string; + in_namespace : zend_bool; + has_bracketed_namespaces : zend_bool; + imports : PHashTable; + imports_function : PHashTable; + imports_const : PHashTable; + end; + zend_file_context = _zend_file_context; + + _zend_parser_stack_elem = record + case longint of + 0 : ( ast : P_zend_ast ); + 1 : ( str : P_zend_string ); + 2 : ( num : zend_ulong ); + end; + zend_parser_stack_elem = _zend_parser_stack_elem; + + + _zend_execute_data = record + opline : P_zend_op; + call :P_zend_execute_data; + return_value :Pzval; + func : P_zend_function; + This : zval; + called_scope : P_zend_class_entry; + prev_execute_data :P_zend_execute_data; + symbol_table :P_zend_array; + run_time_cache : ^pointer; + literals : Pzval; + end; + zend_execute_data = _zend_execute_data; + + user_opcode_handler_t = function (execute_data:p_zend_execute_data):longint;cdecl; + + _zend_op = record + handler : pointer; + op1 : znode_op; + op2 : znode_op; + result : znode_op; + extended_value : Cardinal; + lineno : Cardinal; + opcode : zend_uchar; + op1_type : zend_uchar; + op2_type : zend_uchar; + result_type : zend_uchar; + end; + zend_op = _zend_op ; + + + _zend_brk_cont_element = record + start : longint; + cont : longint; + brk : longint; + parent : longint; + end; + zend_brk_cont_element = _zend_brk_cont_element; + + _zend_label = record + brk_cont : longint; + opline_num : Cardinal; + end; + zend_label = _zend_label; + + _zend_try_catch_element = record + try_op : Cardinal; + catch_op : Cardinal; + finally_op : Cardinal; + finally_end : Cardinal; + end; + zend_try_catch_element = _zend_try_catch_element; + + _zend_property_info = record + offset : Cardinal; + flags : Cardinal; + name : P_zend_string; + doc_comment : P_zend_string; + ce : P_zend_class_entry; + end; + zend_property_info = _zend_property_info; + + _zend_internal_arg_info = record + name : zend_pchar; + class_name : zend_pchar; + type_hint : zend_uchar; + pass_by_reference : zend_uchar; + allow_null : zend_bool; + is_variadic : zend_bool; + end; + zend_internal_arg_info = _zend_internal_arg_info; + + _zend_arg_info = record + name : P_zend_string; + class_name : P_zend_string; + type_hint : zend_uchar; + pass_by_reference : zend_uchar; + allow_null : zend_bool; + is_variadic : zend_bool; + end; + zend_arg_info = _zend_arg_info; + + _zend_internal_function_info = record + required_num_args : zend_uintptr_t; + class_name : zend_pchar; + type_hint : zend_uchar; + return_reference : zend_bool; + allow_null : zend_bool; + _is_variadic : zend_bool; + end; + zend_internal_function_info = _zend_internal_function_info; + + _zend_op_array = record + _type : zend_uchar; + arg_flags : array[0..2] of zend_uchar; + fn_flags : Cardinal; + function_name : P_zend_string; + scope : P_zend_class_entry; + prototype : P_zend_function; + num_args : Cardinal; + required_num_args : Cardinal; + arg_info : Pzend_arg_info; + refcount : ^Cardinal; + this_var : Cardinal; + last : Cardinal; + opcodes : P_zend_op; + last_var : longint; + T : Cardinal; + vars : ^P_zend_string; + last_brk_cont : longint; + last_try_catch : longint; + brk_cont_array : Pzend_brk_cont_element; + try_catch_array : Pzend_try_catch_element; + static_variables : PHashTable; + filename : P_zend_string; + line_start : Cardinal; + line_end : Cardinal; + doc_comment : P_zend_string; + early_binding : Cardinal; + last_literal : longint; + literals : Pzval; + cache_size : longint; + run_time_cache : ^pointer; + reserved : array[0..3] of pointer; + end; + zend_op_array = _zend_op_array; + + + _zend_internal_function = record + _type : zend_uchar; + arg_flags : array[0..2] of zend_uchar; + fn_flags : Cardinal; + function_name : P_zend_string; + scope : P_zend_class_entry; + prototype : P_zend_function; + num_args : Cardinal; + required_num_args : Cardinal; + arg_info : Pzend_internal_arg_info; + handler : procedure (execute_data:p_zend_execute_data; return_value:pzval);cdecl; + module : P_zend_module_entry; + reserved : array[0..3] of pointer; + end; + zend_internal_function = _zend_internal_function; + + + + + _zend_function = record + case longint of + 0 : ( _type : zend_uchar ); + 1 : ( common : record + _type : zend_uchar; + arg_flags : array[0..2] of zend_uchar; + fn_flags : Cardinal; + function_name : P_zend_string; + scope : P_zend_class_entry; + prototype : P_zend_function; + num_args : Cardinal; + required_num_args : Cardinal; + arg_info : Pzend_arg_info; + end ); + 2 : ( op_array : zend_op_array ); + 3 : ( internal_function : zend_internal_function ); + end; + + zend_function = _zend_function; + + + + + _zend_call_kind = (ZEND_CALL_NESTED_FUNCTION,ZEND_CALL_NESTED_CODE, + ZEND_CALL_TOP_FUNCTION,ZEND_CALL_TOP_CODE + ); + zend_call_kind = _zend_call_kind; + + + + + + + + unary_op_type = function (a:pzval; b:pzval):longint;cdecl; + + binary_op_type = function (a:pzval; b:pzval; c:pzval):longint;cdecl; + zend_auto_global_callback = function (name:p_zend_string):zend_bool;cdecl; + + + _zend_auto_global = record + name : P_zend_string; + auto_global_callback : zend_auto_global_callback; + jit : zend_bool; + armed : zend_bool; + end; + zend_auto_global = _zend_auto_global; + + + + + + + + + + + + + + HashPosition = cardinal; + + _HashTableIterator = record + ht : PHashTable; + pos : HashPosition; + end; + HashTableIterator = _HashTableIterator; + + _zend_object = record + gc : zend_refcounted_h; + handle : cardinal; + ce : P_zend_class_entry; + handlers : P_zend_object_handlers; + properties : PHashTable; + properties_table : array[0..0] of zval; + end; + zend_object = _zend_object; + + _zend_resource = record + gc : zend_refcounted_h; + handle : longint; + _type : longint; + ptr : pointer; + end; + zend_resource = _zend_resource; + + _zend_reference = record + gc : zend_refcounted_h; + val : zval; + end; + zend_reference = _zend_reference; + + _zend_ast_ref = record + gc : zend_refcounted_h; + ast : P_zend_ast; + end; + zend_ast_ref = _zend_ast_ref; + + + zend_object_read_property_t = function (_object:pzval; member:pzval; _type:longint; cache_slot:ppointer; rv:pzval):Pzval;cdecl; + + zend_object_read_dimension_t = function (_object:pzval; offset:pzval; _type:longint; rv:pzval):Pzval;cdecl; + + zend_object_write_property_t = procedure (_object:pzval; member:pzval; value:pzval; cache_slot:ppointer);cdecl; + + zend_object_write_dimension_t = procedure (_object:Pzval; offset:Pzval; value:pzval);cdecl; + + zend_object_get_property_ptr_ptr_t = function (_object:Pzval; member:Pzval; _type:longint; cache_slot:pointer):Pzval;cdecl; + + zend_object_set_t = procedure (_object:Pzval; value:pzval);cdecl; + + zend_object_get_t = function (_object:Pzval; rv:pzval):Pzval;cdecl; + + zend_object_has_property_t = function (_object:Pzval; member:Pzval; has_set_exists:longint; cache_slot:pointer):longint;cdecl; + + + zend_object_has_dimension_t = function (_object:Pzval; member:Pzval; check_empty:longint):longint;cdecl; + + + zend_object_unset_property_t = procedure (_object:Pzval; member:Pzval; cache_slot:pointer);cdecl; + + + zend_object_unset_dimension_t = procedure (_object:Pzval; offset:pzval);cdecl; + + + zend_object_get_properties_t = function (_object:pzval):PHashTable;cdecl; + + + zend_object_get_debug_info_t = function (_object:Pzval; is_temp:plongint):PHashTable;cdecl; + + + + + zend_object_call_method_t = function (method:P_zend_string; _object:P_zend_object; execute_data:P_zend_execute_data; return_value:pzval):longint;cdecl; + + zend_object_get_method_t = function (_object:PP_zend_object; method:P_zend_string; key:pzval):P_zend_function;cdecl; + + zend_object_get_constructor_t = function (_object:pzend_object):P_zend_function;cdecl; + + + zend_object_dtor_obj_t = procedure (_object:pzend_object);cdecl; + + zend_object_free_obj_t = procedure (_object:pzend_object);cdecl; + + zend_object_clone_obj_t = function (_object:pzval):P_zend_object;cdecl; + + zend_object_get_class_name_t = function (_object:pzend_object):P_zend_string;cdecl; + + zend_object_compare_t = function (object1:Pzval; object2:pzval):longint;cdecl; + + zend_object_compare_zvals_t = function (resul:Pzval; op1:Pzval; op2:pzval):longint;cdecl; + + + zend_object_cast_t = function (readobj:Pzval; retval:Pzval; _type:longint):longint;cdecl; + + + zend_object_count_elements_t = function (_object:Pzval; count:pzend_long):longint;cdecl; + + zend_object_get_closure_t = function (obj:Pzval; ce_ptr:PP_zend_class_entry; fptr_ptr:PP_zend_function; obj_ptr:pP_zend_object):longint;cdecl; + + zend_object_get_gc_t = function (_object:Pzval; table:PPzval; n:plongint):PHashTable;cdecl; + + zend_object_do_operation_t = function (opcode:zend_uchar; result:Pzval; op1:Pzval; op2:pzval):longint;cdecl; + + + _zend_stack = record + size : longint; + top : longint; + max : longint; + elements : pointer; + end; + zend_stack = _zend_stack; + + + _zend_object_handlers = record + offset : longint; + free_obj : zend_object_free_obj_t; + dtor_obj : zend_object_dtor_obj_t; + clone_obj : zend_object_clone_obj_t; + read_property : zend_object_read_property_t; + write_property : zend_object_write_property_t; + read_dimension : zend_object_read_dimension_t; + write_dimension : zend_object_write_dimension_t; + get_property_ptr_ptr : zend_object_get_property_ptr_ptr_t; + get : zend_object_get_t; + _set : zend_object_set_t; + has_property : zend_object_has_property_t; + unset_property : zend_object_unset_property_t; + has_dimension : zend_object_has_dimension_t; + unset_dimension : zend_object_unset_dimension_t; + get_properties : zend_object_get_properties_t; + get_method : zend_object_get_method_t; + call_method : zend_object_call_method_t; + get_constructor : zend_object_get_constructor_t; + get_class_name : zend_object_get_class_name_t; + compare_objects : zend_object_compare_t; + cast_object : zend_object_cast_t; + count_elements : zend_object_count_elements_t; + get_debug_info : zend_object_get_debug_info_t; + get_closure : zend_object_get_closure_t; + get_gc : zend_object_get_gc_t; + do_operation : zend_object_do_operation_t; + compare : zend_object_compare_zvals_t; + end; + + + + + + + _zend_object_iterator = record + std : zend_object; + data : zval; + funcs : Pzend_object_iterator_funcs; + index : zend_ulong; + end; + + + zend_object_iterator = _zend_object_iterator; + _zend_object_iterator_funcs = record + dtor : procedure (iter:pzend_object_iterator);cdecl; + valid : function (iter:pzend_object_iterator):longint;cdecl; + get_current_data : function (iter:pzend_object_iterator):Pzval;cdecl; + get_current_key : procedure (iter:P_zend_object_iterator; key:pzval);cdecl; + move_forward : procedure (iter:pzend_object_iterator);cdecl; + rewind : procedure (iter:pzend_object_iterator);cdecl; + invalidate_current : procedure (iter:pzend_object_iterator);cdecl; + end; + zend_object_iterator_funcs = _zend_object_iterator_funcs; + + + + _zend_ini_parser_param = record + ini_parser_cb : zend_ini_parser_cb_t; + arg : pointer; + end; + zend_ini_parser_param = _zend_ini_parser_param; + + + _zend_module_entry = record + size : word; + zend_api : dword; + zend_debug : byte; + zts : byte; + ini_entry : P_zend_ini_entry; + deps : P_zend_module_dep; + name : zend_pchar; + functions : P_zend_function_entry; + module_startup_func : function (_type:longint; module_number:longint):longint;cdecl; + module_shutdown_func : function (_type:longint; module_number:longint):longint;cdecl; + request_startup_func : function (_type:longint; module_number:longint):longint;cdecl; + request_shutdown_func : function (_type:longint; module_number:longint):longint;cdecl; + info_func : procedure (zend_module:p_zend_module_entry);cdecl; + version : zend_pchar; + globals_size : size_t; + globals_ptr : pointer; + globals_ctor : procedure (global:pointer);cdecl; + globals_dtor : procedure (global:pointer);cdecl; + post_deactivate_func : function :longint;cdecl; + module_started : longint; + _type : byte; + handle : pointer; + module_number : longint; + build_id : zend_pchar; + end; + zend_module_entry = _zend_module_entry; + + + + + + _zend_module_dep = record + name : zend_pchar; + rel : zend_pchar; + version : zend_pchar; + _type : byte; + end; + + zend_module_dep = _zend_module_dep; + + _zend_function_entry = record + fname : zend_pchar; + handler : pointer; + //handler: procedure (execute_data:P_zend_execute_data; return_value:Pointer);cdecl; + arg_info : P_zend_internal_arg_info; + num_args : Cardinal; + flags : Cardinal; + end; + zend_function_entry = _zend_function_entry; + + _php_stream_context = record + notifier : P_php_stream_notifier; + options : zval; + res : P_zend_resource; + end; + php_stream_context = _php_stream_context ; + php_stream_notification_func = procedure (context:P_php_stream_context; notifycode:longint; severity:longint; xmsg:zend_pchar; xcode:longint; + bytes_sofar:size_t; bytes_max:size_t; ptr:pointer);cdecl; + + + _php_stream_notifier = record + func : php_stream_notification_func; + dtor : procedure (notifier:p_php_stream_notifier); + ptr : zval; + mask : longint; + progress : size_t; + progress_max : size_t; + end; + + + + + + + + + + _php_stream_bucket = record + next : P_php_stream_bucket; + prev : P_php_stream_bucket; + brigade : P_php_stream_bucket_brigade; + buf : zend_pchar; + buflen : size_t; + own_buf : longint; + is_persistent : longint; + refcount : longint; + end; + + _php_stream_bucket_brigade = record + head : P_php_stream_bucket; + tail : P_php_stream_bucket; + end; + + php_stream_bucket = _php_stream_bucket ; + php_stream_bucket_brigade = _php_stream_bucket_brigade ; + + php_stream_filter_status_t = (PSFS_ERR_FATAL,PSFS_FEED_ME,PSFS_PASS_ON + ); + + + _php_stream_filter_chain = record + head : P_php_stream_filter; + tail : P_php_stream_filter; + stream : P_php_stream; + end; + php_stream_filter_chain = _php_stream_filter_chain; + _php_stream = record + ops : Pphp_stream_ops; + _abstract : pointer; + readfilters : php_stream_filter_chain; + writefilters : php_stream_filter_chain; + wrapper : P_php_stream_wrapper; + wrapperthis : pointer; + wrapperdata : zval; + fgetss_state : longint; + is_persistent : longint; + mode : array[0..15] of char; + res : P_zend_resource; + in_free : longint; + fclose_stdiocast : longint; + stdiocast : POINTER; + __exposed : longint; + orig_path : zend_pchar; + ctx : P_zend_resource; + flags : longint; + eof : longint; + position : zend_off_t; + readbuf : Pbyte; + readbuflen : size_t; + readpos : zend_off_t; + writepos : zend_off_t; + chunk_size : size_t; + open_filename : zend_pchar; + open_lineno : uint; + enclosing_stream : P_php_stream; + end; + + php_stream = _php_stream ; + _php_stream_filter = record + fops : Pphp_stream_filter_ops; + _abstract : zval; + next : P_php_stream_filter; + prev : P_php_stream_filter; + is_persistent : longint; + chain : Pphp_stream_filter_chain; + buffer : php_stream_bucket_brigade; + res : P_zend_resource; + end; + php_stream_filter = _php_stream_filter ; + _php_stream_filter_ops = record + filter : function (stream:P_php_stream; thisfilter:P_php_stream_filter; buckets_in:P_php_stream_bucket_brigade; buckets_out:P_php_stream_bucket_brigade; bytes_consumed:Psize_t; + flags:longint):php_stream_filter_status_t;cdecl; + dtor : procedure (thisfilter:p_php_stream_filter);cdecl; + _label : zend_pchar; + end; + php_stream_filter_ops = _php_stream_filter_ops; + + + + + + _php_stream_filter_factory = record + create_filter : function (filtername:zend_pchar; filterparams:Pzval; persistent:longint):P_php_stream_filter;cdecl; + end; + php_stream_filter_factory = _php_stream_filter_factory; + + + + + + + _php_stream_statbuf = record + sb : zend_stat_t; + end; + php_stream_statbuf = _php_stream_statbuf; + + _php_stream_dirent = record + d_name : array[0..(256)-1] of char; + end; + php_stream_dirent = _php_stream_dirent; + + + + _php_stream_ops = record + write : function (stream:P_php_stream; buf:zend_pchar; count:size_t):size_t;cdecl; + read : function (stream:P_php_stream; buf:zend_pchar; count:size_t):size_t;cdecl; + close : function (stream:P_php_stream; close_handle:longint):longint;cdecl; + flush : function (stream:p_php_stream):longint;cdecl; + _label : zend_pchar; + seek : function (stream:P_php_stream; offset:zend_off_t; whence:longint; newoffset:pzend_off_t):longint;cdecl; + cast : function (stream:P_php_stream; castas:longint; ret:ppointer):longint;cdecl; + stat : function (stream:P_php_stream; ssb:pphp_stream_statbuf):longint;cdecl; + set_option : function (stream:P_php_stream; option:longint; value:longint; ptrparam:pointer):longint;cdecl; + end; + php_stream_ops = _php_stream_ops; + + _php_stream_wrapper = record + wops : Pphp_stream_wrapper_ops; + _abstract : pointer; + is_url : longint; + end; + php_stream_wrapper = _php_stream_wrapper ; + + _php_stream_wrapper_ops = record + stream_opener : function (wrapper:P_php_stream_wrapper; filename:zend_pchar; mode:zend_pchar; options:longint; opened_path:PP_zend_string; context:P_php_stream_context; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream;cdecl; + stream_closer : function (wrapper:P_php_stream_wrapper; stream:p_php_stream):longint;cdecl; + stream_stat : function (wrapper:P_php_stream_wrapper; stream:P_php_stream; ssb:pphp_stream_statbuf):longint;cdecl; + url_stat : function (wrapper:P_php_stream_wrapper; url:zend_pchar; flags:longint; ssb:Pphp_stream_statbuf; context:pphp_stream_context):longint;cdecl; + dir_opener : function (wrapper:P_php_stream_wrapper; filename:zend_pchar; mode:zend_pchar; options:longint; opened_path:PP_zend_string; context:P_php_stream_context; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream;cdecl; + _label : zend_pchar; + unlink : function (wrapper:P_php_stream_wrapper; url:zend_pchar; options:longint; context:pphp_stream_context):longint;cdecl; + rename : function (wrapper:P_php_stream_wrapper; url_from:zend_pchar; url_to:zend_pchar; options:longint; context:pphp_stream_context):longint;cdecl; + stream_mkdir : function (wrapper:P_php_stream_wrapper; url:zend_pchar; mode:longint; options:longint; context:pphp_stream_context):longint;cdecl; + stream_rmdir : function (wrapper:P_php_stream_wrapper; url:zend_pchar; options:longint; context:Pphp_stream_context):longint;cdecl; + stream_metadata : function (wrapper:P_php_stream_wrapper; url:zend_pchar; options:longint; value:Ppointer; context:Pphp_stream_context):longint;cdecl; + end; + php_stream_wrapper_ops = _php_stream_wrapper_ops; + + + + + + + + sapi_header_struct = record + header : zend_pchar; + header_len : size_t; + end; + + + + + _zend_llist_element = record + next : P_zend_llist_element; + prev : P_zend_llist_element; + data : array[0..0] of char; + end; + zend_llist_element = _zend_llist_element; + + + llist_dtor_func_t = procedure (_para1:pointer);cdecl; + + llist_compare_func_t = function (_para1:PP_zend_llist_element; _para2:PP_zend_llist_element):longint;cdecl; + + llist_apply_with_args_func_t = procedure (data:Ppointer; num_args:longint; args:va_list);cdecl; + + llist_apply_with_arg_func_t = procedure (data:Ppointer; arg:Ppointer);cdecl; + + llist_apply_func_t = procedure (_para1:pointer);cdecl; + + _zend_llist = record + head : Pzend_llist_element; + tail : Pzend_llist_element; + count : size_t; + size : size_t; + dtor : llist_dtor_func_t; + persistent : byte; + traverse_ptr : Pzend_llist_element; + end; + zend_llist = _zend_llist; + + zend_llist_position = Pzend_llist_element; + + + sapi_headers_struct = record + headers : zend_llist; + http_response_code : longint; + send_default_content_type : byte; + mimetype : zend_pchar; + http_status_line : zend_pchar; + end; + + _sapi_post_entry = record + content_type : zend_pchar; + content_type_len : uint; + post_reader : procedure ;cdecl; + post_handler : procedure (content_type_dup:zend_pchar; arg:Ppointer);cdecl; + end; + sapi_post_entry = _sapi_post_entry; + + + + sapi_request_info = record + request_method : zend_pchar; + query_string : zend_pchar; + cookie_data : zend_pchar; + content_length : zend_long; + path_translated : zend_pchar; + request_uri : zend_pchar; + request_body : P_php_stream; + content_type : zend_pchar; + headers_only : zend_bool; + no_headers : zend_bool; + headers_read : zend_bool; + post_entry : P_sapi_post_entry; + content_type_dup : zend_pchar; + auth_user : zend_pchar; + auth_password : zend_pchar; + auth_digest : zend_pchar; + argv0 : zend_pchar; + current_user : zend_pchar; + current_user_length : longint; + argc : longint; + argv : ^zend_pchar; + proto_num : longint; + end; + + + _sapi_globals_struct = record + server_context : pointer; + request_info : sapi_request_info; + sapi_headers : sapi_headers_struct; + read_post_bytes : FixedUInt ; + post_read : byte; + headers_sent : byte; + global_stat : zend_stat_t; + default_mimetype : zend_pchar; + default_charset : zend_pchar; + rfc1867_uploaded_files : PHashTable; + post_max_size : zend_long; + options : longint; + sapi_started : zend_bool; + global_request_time : double; + known_post_content_types : HashTable; + callback_func : zval; + fci_cache : zend_fcall_info_cache; + end; + sapi_globals_struct = _sapi_globals_struct; + + sapi_header_line = record + line : zend_pchar; + line_len : size_t; + response_code : zend_long; + end; + + + + + + sapi_header_op_enum = (SAPI_HEADER_REPLACE,SAPI_HEADER_ADD_,SAPI_HEADER_DELETE, + SAPI_HEADER_DELETE_ALL,SAPI_HEADER_SET_STATUS + ); + + + _sapi_module_struct = record + name : zend_pchar; + pretty_name : zend_pchar; + startup : function (sapi_module:P_sapi_module_struct):longint;cdecl; + shutdown : function (sapi_module:P_sapi_module_struct):longint;cdecl; + activate : function :longint;cdecl; + deactivate : function :longint;cdecl; + ub_write : function (str:zend_pchar; str_length:size_t):size_t;cdecl; + flush : procedure (server_context:Ppointer);cdecl; + get_stat : function :P_zend_stat_t;cdecl; + getenv : function (name:zend_pchar; name_len:size_t):zend_pchar;cdecl; + sapi_error : procedure (_type:longint; error_msg:zend_pchar);cdecl varargs; + header_handler : function (sapi_header:Psapi_header_struct; op:sapi_header_op_enum; sapi_headers:Psapi_headers_struct):longint;cdecl; + send_headers : function (sapi_headers:Psapi_headers_struct):longint;cdecl; + send_header : procedure (sapi_header:Psapi_header_struct; server_context:Ppointer);cdecl; + read_post : function (buffer:zend_pchar; count_bytes:size_t):size_t;cdecl; + read_cookies : function :zend_pchar;cdecl; + register_server_variables : procedure (track_vars_array:Pzval);cdecl; + log_message : procedure (message:zend_pchar);cdecl; + get_request_time : function :double;cdecl; + terminate_process : procedure ;cdecl; + php_ini_path_override : zend_pchar; + block_interruptions : procedure ;cdecl; + unblock_interruptions : procedure ;cdecl; + default_post_reader : procedure ;cdecl; + treat_data : procedure (arg:longint; str:zend_pchar; destArray:Pzval);cdecl; + executable_location : zend_pchar; + php_ini_ignore : longint; + php_ini_ignore_cwd : longint; + get_fd : function (fd:Plongint):longint;cdecl; + force_http_10 : function :longint;cdecl; + get_target_uid : function (_para1:Puid_t):longint;cdecl; + get_target_gid : function (_para1:Pgid_t):longint;cdecl; + input_filter : function (arg:longint; _var:zend_pchar; val:PPchar; val_len:size_t; new_val_len:Psize_t):dword;cdecl; + ini_defaults : procedure (configuration_hash:PHashTable);cdecl; + phpinfo_as_text : longint; + ini_entries : zend_pchar; + additional_functions : Pzend_function_entry; + input_filter_init : function :dword;cdecl; + end; + sapi_module_struct = _sapi_module_struct; + + + Ptsrm_intptr_t = ^tsrm_intptr_t; + Ptsrm_uintptr_t = ^tsrm_uintptr_t; + Pts_rsrc_id = ^ts_rsrc_id; + + tsrm_intptr_t = intptr; + tsrm_uintptr_t = uintptr_t; + + + ts_rsrc_id = longint; + + Pbeos_ben = ^beos_ben; + beos_ben = record + sem : integer; + ben : longint; + end; + + ts_allocate_ctor = procedure (_para1:pointer);cdecl; + + ts_allocate_dtor = procedure (_para1:pointer);cdecl; + + tsrm_thread_begin_func_t = procedure (thread_id:DWORD);cdecl; + + tsrm_thread_end_func_t = procedure (thread_id:DWORD);cdecl; + + + + zend_ini_entry = _zend_ini_entry ; + + + + _zend_arena = record + ptr : zend_pchar; + _end : zend_pchar; + prev : P_zend_arena; + end; + zend_arena = _zend_arena; + _zend_compiler_globals = record + loop_var_stack : zend_stack; + active_class_entry : P_zend_class_entry; + compiled_filename : P_zend_string; + zend_lineno : longint; + active_op_array : P_zend_op_array; + function_table : PHashTable; + class_table : PHashTable; + filenames_table : HashTable; + auto_globals : PHashTable; + parse_error : zend_bool; + in_compilation : zend_bool; + short_tags : zend_bool; + unclean_shutdown : zend_bool; + ini_parser_unbuffered_errors : zend_bool; + open_files : zend_llist; + ini_parser_param : P_zend_ini_parser_param; + start_lineno : uint32_t; + increment_lineno : zend_bool; + doc_comment : P_zend_string; + compiler_options : uint32_t; + const_filenames : HashTable; + context : zend_oparray_context; + file_context : zend_file_context; + arena : P_zend_arena; + empty_string : P_zend_string; + one_char_string : array[0..255] of P_zend_string; + interned_strings : HashTable; + script_encoding_list : PPzend_encoding; + script_encoding_list_size : size_t; + multibyte : zend_bool; + detect_unicode : zend_bool; + encoding_declared : zend_bool; + ast : P_zend_ast; + ast_arena : P_zend_arena; + delayed_oplines_stack : pointer; + static_members_table : ^Pzval; + last_static_member : longint; + end; + + + _zend_objects_store = record + object_buckets : ^P_zend_object; + top : uint32_t; + size : uint32_t; + free_list_head : longint; + end; + zend_objects_store = _zend_objects_store; + + + _zend_executor_globals = record + uninitialized_zval : zval; + error_zval : zval; + symtable_cache : array[0..(32)-1] of P_zend_array; + symtable_cache_limit : ^P_zend_array; + symtable_cache_ptr : ^P_zend_array; + symbol_table : zend_array; + included_files : HashTable; + bailout : pointer; + error_reporting : longint; + exit_status : longint; + function_table : PHashTable; + class_table : PHashTable; + zend_constants : PHashTable; + vm_stack_top : Pzval; + vm_stack_end : Pzval; + vm_stack : _zend_vm_stack; + current_execute_data : P_zend_execute_data; + scope : P_zend_class_entry; + precision : zend_long; + ticks_count : longint; + in_autoload : PHashTable; + autoload_func : P_zend_function; + full_tables_cleanup : zend_bool; + no_extensions : zend_bool; + timed_out : zend_bool; + windows_version_info : OSVERSIONINFOEX; + regular_list : HashTable; + persistent_list : HashTable; + user_error_handler_error_reporting : longint; + user_error_handler : zval; + user_exception_handler : zval; + user_error_handlers_error_reporting : zend_stack; + user_error_handlers : zend_stack; + user_exception_handlers : zend_stack; + error_handling : zend_error_handling_t; + exception_class : P_zend_class_entry; + timeout_seconds : zend_long; + lambda_count : longint; + ini_directives : PHashTable; + modified_ini_directives : PHashTable; + error_reporting_ini_entry : P_zend_ini_entry; + objects_store : zend_objects_store; + exception : P_zend_object; + prev_exception : P_zend_object; + opline_before_exception : P_zend_op; + exception_op : array[0..2] of zend_op; + current_module : P_zend_module_entry; + active : zend_bool; + valid_symbol_table : zend_bool; + assertions : zend_long; + ht_iterators_count : uint32_t; + ht_iterators_used : uint32_t; + ht_iterators : PHashTableIterator; + ht_iterators_slots : array[0..15] of HashTableIterator; + // saved_fpu_cw_ptr : pointer; + saved_fpu_cw : LONGINT; + trampoline : zend_function; + call_trampoline_op : zend_op; + reserved : array[0..(4)-1] of pointer; + end; + + _zend_ini_scanner_globals = record + yy_in : Pzend_file_handle; + yy_out : Pzend_file_handle; + yy_leng : dword; + yy_start : Pbyte; + yy_text : Pbyte; + yy_cursor : Pbyte; + yy_marker : Pbyte; + yy_limit : Pbyte; + yy_state : longint; + state_stack : zend_stack; + filename : zend_pchar; + lineno : longint; + scanner_mode : longint; + end; + + _zend_ptr_stack = record + top : longint; + max : longint; + elements : ^pointer; + top_element : ^pointer; + persistent : zend_bool; + end; + zend_ptr_stack = _zend_ptr_stack; + + + + + zend_encoding_filter = function (str:LPBYTE; str_length:Psize_t; buf:Pbyte; length:size_t):size_t;cdecl; + + Pzend_encoding_fetcher = ^zend_encoding_fetcher; + zend_encoding_fetcher = function (encoding_name:zend_pchar):Pzend_encoding;cdecl; + + Pzend_encoding_name_getter = ^zend_encoding_name_getter; + zend_encoding_name_getter = function (encoding:Pzend_encoding):zend_pchar;cdecl; + + zend_encoding_lexer_compatibility_checker = function (encoding:Pzend_encoding):longint;cdecl; + + zend_encoding_detector = function (_string:Pbyte; length:size_t; list:PPzend_encoding; list_size:size_t):Pzend_encoding;cdecl; + + zend_encoding_converter = function (_to:LPBYTE; to_length:Psize_t; from:Pbyte; from_length:size_t; encoding_to:Pzend_encoding; + encoding_from:Pzend_encoding):size_t;cdecl; + + zend_encoding_list_parser = function (encoding_list:zend_pchar; encoding_list_len:size_t; return_list:PPPzend_encoding; return_size:Psize_t; persistent:longint):longint;cdecl; + + zend_encoding_internal_encoding_getter = function :Pzend_encoding;cdecl; + + zend_encoding_internal_encoding_setter = function (encoding:Pzend_encoding):longint;cdecl; + + + _zend_multibyte_functions = record + provider_name : zend_pchar; + encoding_fetcher : zend_encoding_fetcher; + encoding_name_getter : zend_encoding_name_getter; + lexer_compatibility_checker : zend_encoding_lexer_compatibility_checker; + encoding_detector : zend_encoding_detector; + encoding_converter : zend_encoding_converter; + encoding_list_parser : zend_encoding_list_parser; + internal_encoding_getter : zend_encoding_internal_encoding_getter; + internal_encoding_setter : zend_encoding_internal_encoding_setter; + end; + zend_multibyte_functions = _zend_multibyte_functions; + + _zend_leak_info = record + addr : pointer; + size : size_t; + filename : zend_pchar; + orig_filename : zend_pchar; + lineno : uint; + orig_lineno : uint; + end; + zend_leak_info = _zend_leak_info; + + + + _zend_mm_debug_info = record + size : size_t; + filename : zend_pchar; + orig_filename : zend_pchar; + lineno : uint; + orig_lineno : uint; + end; + zend_mm_debug_info = _zend_mm_debug_info; + + _zend_mm_heap = record + use_custom_heap : longint; + storage : P_zend_mm_storage; + size : size_t; + peak : size_t; + free_slot : array[0..(30)-1] of P_zend_mm_free_slot; + real_size : size_t; + real_peak : size_t; + limit : size_t; + overflow : longint; + huge_list : P_zend_mm_huge_list; + main_chunk : P_zend_mm_chunk; + cached_chunks : P_zend_mm_chunk; + chunks_count : longint; + peak_chunks_count : longint; + cached_chunks_count : longint; + avg_chunks_count : double; + custom_heap : record + case longint of + 0 : ( std : record + _malloc : function (_para1:size_t):pointer;cdecl; + _free : procedure (_para1:pointer);cdecl; + _realloc : function (_para1:pointer; _para2:size_t):pointer;cdecl; + end ); + 1 : ( debug : record + _malloc : function (g:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer;cdecl; + _free : procedure (g:Ppointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint);cdecl; + _realloc : function (g:Ppointer; gg:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; + __zend_orig_lineno:uint):pointer;cdecl; + end ); + end; + end; + + + _zend_mm_chunk = record + heap : P_zend_mm_heap; + next : P_zend_mm_chunk; + prev : P_zend_mm_chunk; + free_pages : longint; + free_tail : longint; + num : longint; + reserve : array[0..(64 - (sizeof(POINTER) * 3 + sizeof(integer) * 3))] of char; + heap_slot : _zend_mm_heap; + free_map : pointer; + map : Pointer; + end; + + _zend_mm_page = record + bytes : array[0..(4 * 1024)-1] of char; + end; + + _zend_mm_bin = record + bytes : array[0..(4 * 1024*8)-1] of char; + end; + + _zend_mm_free_slot = record + next_free_slot : P_zend_mm_free_slot; + end; + + + _zend_mm_huge_list = record + ptr : pointer; + size : size_t; + next : P_zend_mm_huge_list; + dbg : zend_mm_debug_info; + end; + + + + zend_mm_chunk_alloc_t = function (storage:PPointer; size:size_t; alignment:size_t):pointer;cdecl; + + zend_mm_chunk_free_t = procedure (storage:PPointer; chunk:Ppointer; size:size_t);cdecl; + + zend_mm_chunk_truncate_t = function (storage:PPointer; chunk:Ppointer; old_size:size_t; new_size:size_t):longint;cdecl; + + zend_mm_chunk_extend_t = function (storage:PPointer; chunk:Ppointer; old_size:size_t; new_size:size_t):longint;cdecl; + + + + zend_mm_heap =_zend_mm_heap ; + _zend_mm_handlers = record + chunk_alloc : zend_mm_chunk_alloc_t; + chunk_free : zend_mm_chunk_free_t; + chunk_truncate : zend_mm_chunk_truncate_t; + chunk_extend : zend_mm_chunk_extend_t; + end; + zend_mm_handlers = _zend_mm_handlers; + _zend_mm_storage = record + handlers : zend_mm_handlers; + data : pointer; + end; + zend_mm_storage = _zend_mm_storage ; + + + _zend_closure = record + std : zend_object; + func : zend_function; + this_ptr : zval; + called_scope : Pzend_class_entry; + orig_internal_handler : procedure (var execute_data:zend_execute_data; var return_value:zval);cdecl; + end; + zend_closure = _zend_closure; + + + + _zend_php_scanner_globals = record + yy_in : Pzend_file_handle; + yy_out : Pzend_file_handle; + yy_leng : dword; + yy_start : Pbyte; + yy_text : Pbyte; + yy_cursor : Pbyte; + yy_marker : Pbyte; + yy_limit : Pbyte; + yy_state : longint; + state_stack : zend_stack; + heredoc_label_stack : zend_ptr_stack; + script_org : Pbyte; + script_org_size : size_t; + script_filtered : Pbyte; + script_filtered_size : size_t; + input_filter : zend_encoding_filter; + output_filter : zend_encoding_filter; + script_encoding : Pzend_encoding; + scanned_string_len : longint; + on_event : procedure (event:zend_php_scanner_event; token:longint; line:longint);cdecl; + end; + + Pzend_hash_key = ^Tzend_hash_key; + Tzend_hash_key = record + h : zend_ulong; + key : Pzend_string; + end; + + Tsmart_str = record + s:Pzend_string; + a:size_t; + end; + + + + + + Tmerge_checker_func_t = function (target_ht:PHashTable; source_data:Pzval; hash_key:Pzend_hash_key; pParam:Ppointer):zend_bool;cdecl; + Tapply_func_t = function (pDest:Pzval):longint;cdecl; + Tapply_func_arg_t = function (pDest:Pzval; argument:Ppointer):longint;cdecl; + Tapply_func_args_t = function (pDest:Pzval; num_args:longint; args:va_list; hash_key:Pzend_hash_key):longint;cdecl; + + + + + +IEJORGJIERGE = procedure (ini_entry:P_zend_ini_entry; _type:longint); +EWKGERGJ945YG45 = procedure (_para1:size_t); +OERGJOERJGIERGHRE = procedure (_para1:size_t); + +ERG4JG09E84GJ8945H45H = procedure (_para1:pointer; _para2:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint); +EWFG439EGRG45 = procedure (_para1:pointer); +G5J90E4GK495Y4 = procedure (_para1:pointer); + f584hj4i5hth = procedure (_para1:pointer); + KD45T5H65HTHRTH = function (element:Ppointer; arg:Ppointer):longint; + IEJG9458U9845Y45 = function (element:Ppointer):longint; + ERGERG43T4T545YH546 = function (element1:Ppointer; element2:Ppointer):longint; + RGEKG34I9TI3434 = function (data:Ppointer):longint; +var +smart_str_erealloc:procedure(str:psmart_str; len:size_t);cdecl; +smart_str_realloc:procedure(str:psmart_str; len:size_t); cdecl; +tsrm_set_new_thread_begin_handler:function(new_thread_begin_handler:tsrm_thread_begin_func_t):pointer; cdecl; +tsrm_set_new_thread_end_handler:function(new_thread_end_handler:tsrm_thread_end_func_t):pointer; cdecl; +tsrm_new_interpreter_context:function:pointer; cdecl; +tsrm_set_interpreter_context:function(new_ctx:Ppointer):pointer; cdecl; +tsrm_free_interpreter_context:procedure(context:Ppointer); cdecl; +tsrm_get_ls_cache:function:pointer; cdecl; +tsrm_error_set:procedure(level:longint; debug_filename:zend_pchar); cdecl; +tsrm_thread_id:function:DWORD; cdecl; +tsrm_mutex_alloc:function:pointer; cdecl; +tsrm_mutex_free:procedure(mutexp:Ppointer); cdecl; +tsrm_mutex_lock:function(mutexp:Ppointer):longint; cdecl; +tsrm_mutex_unlock:function(mutexp:Ppointer):longint; cdecl; +tsrm_startup:function(expected_threads:longint; expected_resources:longint; debug_level:longint; debug_filename:zend_pchar):longint; cdecl; +tsrm_shutdown:procedure; cdecl; +ts_allocate_id:function(rsrc_id:Pts_rsrc_id; size:size_t; ctor:ts_allocate_ctor; dtor:ts_allocate_dtor):ts_rsrc_id; cdecl; +ts_resource_ex:function(id:ts_rsrc_id; th_id:pointer):pointer; cdecl; +ts_free_thread:procedure; cdecl; +ts_free_id:procedure(id:ts_rsrc_id); cdecl; +php_request_startup:function:longint; cdecl; +php_request_shutdown:procedure( dummy:pointer); cdecl; +php_request_shutdown_for_exec:procedure(dummy:Ppointer); cdecl; +php_module_startup:function( sf:p_sapi_module_struct; additional_modules:p_zend_module_entry; num_additional_modules:uint):longint; cdecl; +php_module_shutdown:procedure; cdecl; +php_module_shutdown_for_exec:procedure; cdecl; +php_module_shutdown_wrapper:function(sapi_globals:Psapi_module_struct):longint; cdecl; +php_request_startup_for_hook:function:longint; cdecl; +php_request_shutdown_for_hook:procedure(dummy:Ppointer); cdecl; +php_register_extensions:function(ptr:PP_zend_module_entry; count:longint):longint; cdecl; +php_execute_script:function( primary_file:p_zend_file_handle):longint; cdecl; +php_execute_simple_script:function(primary_file:Pzend_file_handle; ret:Pzval):longint; cdecl; +php_handle_special_queries:function:longint; cdecl; +php_lint_script:function(_file:Pzend_file_handle):longint; cdecl; +php_handle_aborted_connection:procedure; cdecl; +php_handle_auth_data:function(auth:zend_pchar):longint; cdecl; +php_html_puts:procedure(str:zend_pchar; siz:size_t); cdecl; +php_stream_open_for_zend_ex:function(filename:zend_pchar; handle:Pzend_file_handle; mode:longint):longint; cdecl; + + +zend_strndup:function(s:zend_pchar; length:size_t):zend_pchar; cdecl; +_emalloc:function(size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_safe_emalloc:function(nmemb:size_t; size:size_t; offset:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_safe_malloc:function(nmemb:size_t; size:size_t; offset:size_t):pointer; cdecl; +_efree:procedure(ptr:Ppointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint); cdecl; +_ecalloc:function(nmemb:size_t; size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_erealloc:function(ptr:Ppointer; size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_erealloc2:function(ptr:Ppointer; size:size_t; copy_size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_safe_erealloc:function(ptr:Ppointer; nmemb:size_t; size:size_t; offset:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_safe_realloc:function(ptr:Ppointer; nmemb:size_t; size:size_t; offset:size_t):pointer; cdecl; +_estrdup:function(s:zend_pchar; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):zend_pchar; cdecl; +_estrndup:function(s:zend_pchar; length:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):zend_pchar; cdecl; +_zend_mem_block_size:function(ptr:Ppointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):size_t; cdecl; +_emalloc_large:function(size:size_t):pointer; cdecl; +_emalloc_huge:function(size:size_t):pointer; cdecl; +_efree_large:procedure(_para1:pointer; size:size_t); cdecl; +_efree_huge:procedure(_para1:pointer; size:size_t); cdecl; +__zend_malloc:function(len:size_t):pointer; cdecl; +__zend_calloc:function(nmemb:size_t; len:size_t):pointer; cdecl; +__zend_realloc:function(p:Ppointer; len:size_t):pointer; cdecl; +zend_set_memory_limit:function(memory_limit:size_t):longint; cdecl; +start_memory_manager:procedure; cdecl; +shutdown_memory_manager:procedure(silent:longint; full_shutdown:longint); cdecl; +is_zend_mm:function:longint; cdecl; +zend_memory_usage:function(real_usage:longint):size_t; cdecl; +zend_memory_peak_usage:function(real_usage:longint):size_t; cdecl; +zend_mm_startup:function:P_zend_mm_heap; cdecl; +zend_mm_shutdown:procedure(heap:P_zend_mm_heap; full_shutdown:longint; silent:longint); cdecl; +_zend_mm_alloc:function(heap:P_zend_mm_heap; size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_zend_mm_free:procedure(heap:P_zend_mm_heap; p:Ppointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint); cdecl; +_zend_mm_realloc:function(heap:P_zend_mm_heap; p:Ppointer; size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_zend_mm_realloc2:function(heap:P_zend_mm_heap; p:Ppointer; size:size_t; copy_size:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):pointer; cdecl; +_zend_mm_block_size:function(heap:P_zend_mm_heap; p:Ppointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):size_t; cdecl; +zend_mm_set_heap:function(new_heap:Pzend_mm_heap):P_zend_mm_heap; cdecl; +zend_mm_get_heap:function:P_zend_mm_heap; cdecl; +zend_mm_gc:function(heap:Pzend_mm_heap):size_t; cdecl; +zend_mm_is_custom_heap:function(new_heap:Pzend_mm_heap):longint; cdecl; + +zend_mm_get_storage:function(heap:Pzend_mm_heap):P_zend_mm_storage; cdecl; +zend_mm_startup_ex:function(handlers:Pzend_mm_handlers; data:Ppointer; data_size:size_t):P_zend_mm_heap; cdecl; + + + zend_stack_init:function(stack:Pzend_stack; size:longint):longint; + zend_stack_push:function(stack:Pzend_stack; element:Ppointer):longint; + zend_stack_top:function(stack:Pzend_stack):pointer; + zend_stack_del_top:function(stack:Pzend_stack):longint; + zend_stack_int_top:function(stack:Pzend_stack):longint; + zend_stack_is_empty:function(stack:Pzend_stack):longint; + zend_stack_destroy:function(stack:Pzend_stack):longint; + zend_stack_base:function(stack:Pzend_stack):pointer; + zend_stack_count:function(stack:Pzend_stack):longint; + zend_stack_apply:procedure(stack:Pzend_stack; _type:longint; apply_function:IEJG9458U9845Y45); + zend_stack_apply_with_argument:procedure(stack:Pzend_stack; _type:longint; apply_function:KD45T5H65HTHRTH; arg:Ppointer); + zend_stack_clean:procedure(stack:Pzend_stack; func:f584hj4i5hth; free_elements:zend_bool); + + zend_std_get_static_method:function(ce:P_zend_class_entry; function_name_strval:P_zend_string; key:Pzval):P_zend_function; cdecl; + zend_std_get_static_property:function(ce:P_zend_class_entry; property_name:P_zend_string; silent:zend_bool):Pzval; cdecl; + zend_std_unset_static_property:function(ce:P_zend_class_entry; property_name:P_zend_string):zend_bool; cdecl; + zend_std_get_constructor:function(_object:Pzend_object):P_zend_function; cdecl; + zend_get_property_info:function(ce:P_zend_class_entry; member:P_zend_string; silent:longint):P_zend_property_info; cdecl; + zend_std_get_properties:function(_object:Pzval):PHashTable; cdecl; + zend_std_get_debug_info:function(_object:Pzval; is_temp:Plongint):PHashTable; cdecl; + zend_std_cast_object_tostring:function(readobj:Pzval; writeobj:Pzval; _type:longint):longint; cdecl; + zend_std_write_property:procedure(_object:Pzval; member:Pzval; value:Pzval; cache_slot:Ppointer); cdecl; + rebuild_object_properties:procedure(zobj:Pzend_object); cdecl; + zend_check_private:function(fbc:P_zend_function; ce:P_zend_class_entry; function_name:Pzend_string):longint; cdecl; + zend_check_protected:function(ce:P_zend_class_entry; scope:Pzend_class_entry):longint; cdecl; + zend_check_property_access:function(zobj:P_zend_object; prop_info_name:P_zend_string):longint; cdecl; + zend_get_call_trampoline_func:function(ce:P_zend_class_entry; method_name:P_zend_string; is_static:longint):P_zend_function; cdecl; + zend_ast_create_znode:function(node:Pznode):P_zend_ast; cdecl; + lex_scan:function(zendlval:Pzval):longint; cdecl; + zend_set_compiled_filename:function(new_compiled_filename:P_zend_string):P_zend_string; cdecl; + zend_restore_compiled_filename:procedure(original_compiled_filename:P_zend_string); cdecl; + zend_get_compiled_filename:function:P_zend_string; cdecl; + zend_get_compiled_lineno:function:longint; cdecl; + zend_get_scanned_file_offset:function:size_t; cdecl; + zend_get_compiled_variable_name:function(op_array:P_zend_op_array; _var:Cardinal):P_zend_string; cdecl; + get_unary_op:function(opcode:longint):unary_op_type; cdecl; + get_binary_op:function(opcode:longint):binary_op_type; cdecl; + do_bind_function:function(op_array:P_zend_op_array; opline:P_zend_op; function_table:PHashTable; compile_time:zend_bool):longint; cdecl; + do_bind_class:function(op_array:P_zend_op_array; opline:P_zend_op; class_table:PHashTable; compile_time:zend_bool):P_zend_class_entry; cdecl; + do_bind_inherited_class:function(op_array:P_zend_op_array; opline:P_zend_op; class_table:PHashTable; parent_ce:P_zend_class_entry; compile_time:zend_bool):P_zend_class_entry; cdecl; + zend_do_delayed_early_binding:procedure(op_array:Pzend_op_array); cdecl; + function_add_ref:procedure(_function:Pzend_function); cdecl; + compile_file:function(file_handle:Pzend_file_handle; _type:longint):P_zend_op_array; cdecl; + compile_string:function(source_string:Pzval; filename:zend_pchar):P_zend_op_array; cdecl; + compile_filename:function(_type:longint; filename:Pzval):P_zend_op_array; cdecl; + zend_try_exception_handler:procedure; cdecl; + zend_execute_scripts:function(_type:longint; retval:Pzval; file_count:longint):longint; cdecl varargs; + open_file_for_scanning:function(file_handle:Pzend_file_handle):longint; cdecl; + init_op_array:procedure(op_array:P_zend_op_array; _type:zend_uchar; initial_ops_size:longint); cdecl; + destroy_op_array:procedure(op_array:Pzend_op_array); cdecl; + zend_destroy_file_handle:procedure(file_handle:Pzend_file_handle); cdecl; + zend_cleanup_user_class_data:procedure(ce:Pzend_class_entry); cdecl; + zend_cleanup_internal_class_data:procedure(ce:Pzend_class_entry); cdecl; + zend_cleanup_internal_classes:procedure; cdecl; + zend_cleanup_op_array_data:procedure(op_array:Pzend_op_array); cdecl; + clean_non_persistent_function_full:function(zv:Pzval):longint; cdecl; + clean_non_persistent_class_full:function(zv:Pzval):longint; cdecl; + destroy_zend_function:procedure(_function:Pzend_function); cdecl; + zend_function_dtor:procedure(zv:Pzval); cdecl; + destroy_zend_class:procedure(zv:Pzval); cdecl; + zend_mangle_property_name:function(src1:zend_pchar; src1_length:size_t; src2:zend_pchar; src2_length:size_t; internal:longint):P_zend_string; cdecl; + zend_unmangle_property_name_ex:function(name:Pzend_string; class_name:PPchar; prop_name:PPchar; prop_len:Psize_t):longint; cdecl; + pass_two:function(op_array:Pzend_op_array):longint; cdecl; + zend_is_compiling:function:zend_bool; cdecl; + zend_make_compiled_string_description:function(name:zend_pchar):zend_pchar; cdecl; + zend_initialize_class_data:procedure(ce:Pzend_class_entry; nullify_handlers:zend_bool); cdecl; + zend_get_call_op:function(init_op:zend_uchar; fbc:Pzend_function):zend_uchar; cdecl; + zend_register_auto_global:function(name:Pzend_string; jit:zend_bool; auto_global_callback:zend_auto_global_callback):longint; cdecl; + zend_activate_auto_globals:procedure; cdecl; + zend_is_auto_global:function(name:Pzend_string):zend_bool; cdecl; + zend_is_auto_global_str:function(name:zend_pchar; len:size_t):zend_bool; cdecl; + zend_dirname:function(path:zend_pchar; len:size_t):size_t; cdecl; + zend_set_function_arg_flags:procedure(func:Pzend_function); cdecl; + zend_assert_valid_class_name:procedure(const_name:Pzend_string); cdecl; + zend_ast_create_zval_ex:function(zv:Pzval; attr:zend_ast_attr):P_zend_ast; cdecl; + zend_ast_create_ex:function(kind:zend_ast_kind; attr:zend_ast_attr):P_zend_ast; cdecl varargs; + zend_ast_create:function(kind:zend_ast_kind):P_zend_ast; cdecl varargs; + zend_ast_create_decl:function(kind:zend_ast_kind; flags:Cardinal; start_lineno:Cardinal; doc_comment:Pzend_string; name:Pzend_string; child0:Pzend_ast; child1:Pzend_ast; child2:Pzend_ast; child3:Pzend_ast):P_zend_ast; cdecl; + zend_ast_create_list:function(init_children:Cardinal; kind:zend_ast_kind):P_zend_ast; cdecl varargs; + zend_ast_list_add:function(list:Pzend_ast; op:Pzend_ast):P_zend_ast; cdecl; + zend_ast_evaluate:function(result:Pzval; ast:Pzend_ast; scope:Pzend_class_entry):longint; cdecl; + zend_ast_export:function(prefix:zend_pchar; ast:Pzend_ast; suffix:zend_pchar):P_zend_string; cdecl; + zend_ast_copy:function(ast:Pzend_ast):P_zend_ast; cdecl; + zend_ast_destroy:procedure(ast:Pzend_ast); cdecl; + zend_ast_destroy_and_free:procedure(ast:Pzend_ast); cdecl; + zend_ast_apply:procedure(ast:Pzend_ast; fn:zend_ast_apply_func); cdecl; + zend_stream_open:function(filename:zend_pchar; handle:Pzend_file_handle):longint; cdecl; + zend_stream_fixup:function(file_handle:Pzend_file_handle; buf:PPchar; len:Psize_t):longint; cdecl; + zend_file_handle_dtor:procedure(fh:Pzend_file_handle); cdecl; + zend_compare_file_handles:function(fh1:Pzend_file_handle; fh2:Pzend_file_handle):longint; cdecl; + zend_startup:function(utility_functions:Pzend_utility_functions; extensions:PPchar):longint; cdecl; + zend_shutdown:procedure; cdecl; + zend_register_standard_ini_entries:procedure; cdecl; + zend_post_startup:procedure; cdecl; + zend_set_utility_values:procedure(utility_values:Pzend_utility_values); cdecl; + _zend_bailout:procedure(filename:zend_pchar; lineno:uint); cdecl; + get_zend_version:function:zend_pchar; cdecl; + zend_make_printable_zval:function(expr:Pzval; expr_copy:Pzval):longint; cdecl; + zend_print_zval:function(expr:Pzval; indent:longint):size_t; cdecl; + zend_print_zval_ex:function(write_func:zend_write_func_t; expr:Pzval; indent:longint):size_t; cdecl; + zend_print_zval_r:procedure(expr:Pzval; indent:longint); cdecl; + zend_print_flat_zval_r:procedure(expr:Pzval); cdecl; + zend_print_zval_r_ex:procedure(write_func:zend_write_func_t; expr:Pzval; indent:longint); cdecl; + zend_output_debug_string:procedure(trigger_break:zend_bool; format:zend_pchar); cdecl varargs; + zend_activate:procedure; cdecl; + zend_deactivate:procedure; cdecl; + zend_call_destructors:procedure; cdecl; + zend_activate_modules:procedure; cdecl; + zend_deactivate_modules:procedure; cdecl; + zend_post_deactivate_modules:procedure; cdecl; + free_estring:procedure(str_p:PPchar); cdecl; + zend_error:procedure(_type:longint; format:zend_pchar); cdecl varargs; + zend_throw_error:procedure(exception_ce:Pzend_class_entry; format:zend_pchar); cdecl varargs; + zend_type_error:procedure(format:zend_pchar); cdecl varargs; + zend_internal_type_error:procedure(throw_exception:zend_bool; format:zend_pchar); cdecl varargs; + zenderror:procedure(error:zend_pchar); cdecl; + zend_message_dispatcher:procedure(message:zend_long; data:Ppointer); cdecl; + zend_get_configuration_directive:function(name:Pzend_string):Pzval; cdecl; + zend_next_free_module:function:longint cdecl; + zend_get_parameters:function(ht:longint; param_count:longint):longint; cdecl varargs; + zend_get_parameters_ex:function(param_count:longint):longint; cdecl varargs; + ZvalGetArgs: function(Count: Integer; Args: ppzval): Integer;cdecl varargs; + _zend_get_parameters_array_ex:function(param_count:longint; argument_array:Pzval):longint; cdecl; + zend_copy_parameters_array:function(param_count:longint; argument_array:Pzval):longint; cdecl; + zend_parse_parameters:function(num_args:longint; type_spec:zend_pchar):longint; cdecl varargs; + zend_parse_parameters_ex:function(flags:longint; num_args:longint; type_spec:zend_pchar):longint; cdecl varargs; + zend_parse_parameters_throw:function(num_args:longint; type_spec:zend_pchar):longint; cdecl varargs; + zend_zval_type_name:function(arg:Pzval):zend_pchar; cdecl; + zend_parse_method_parameters:function(num_args:longint; this_ptr:Pzval; type_spec:zend_pchar):longint; cdecl varargs; + zend_parse_method_parameters_ex:function(flags:longint; num_args:longint; this_ptr:Pzval; type_spec:zend_pchar):longint; cdecl varargs; + zend_parse_parameter:function(flags:longint; arg_num:longint; arg:Pzval; spec:zend_pchar):longint; cdecl varargs; + zend_register_functions:function(scope:Pzend_class_entry; functions:Pzend_function_entry; function_table:PHashTable; _type:longint):longint; cdecl; + zend_unregister_functions:procedure(functions:Pzend_function_entry; count:longint; function_table:PHashTable); cdecl; + zend_startup_module:function(module_entry:Pzend_module_entry):longint; cdecl; + zend_register_internal_module:function(module_entry:Pzend_module_entry):P_zend_module_entry; cdecl; + zend_register_module_ex:function(module:Pzend_module_entry):P_zend_module_entry; cdecl; + zend_startup_module_ex:function(module:Pzend_module_entry):longint; cdecl; + zend_startup_modules:function:longint cdecl; + zend_check_magic_method_implementation:procedure(ce:Pzend_class_entry; fptr:Pzend_function; error_type:longint); cdecl; + zend_register_internal_class:function(class_entry:Pzend_class_entry):P_zend_class_entry; cdecl; + zend_register_internal_class_ex:function(class_entry:Pzend_class_entry; parent_ce:Pzend_class_entry):P_zend_class_entry; cdecl; + zend_register_internal_interface:function(orig_class_entry:Pzend_class_entry):P_zend_class_entry; cdecl; + zend_class_implements:procedure(class_entry:Pzend_class_entry; num_interfaces:longint); cdecl varargs; + zend_register_class_alias_ex:function(name:zend_pchar; name_len:size_t; ce:Pzend_class_entry):longint; cdecl; + zend_disable_function:function(function_name:zend_pchar; function_name_length:size_t):longint; cdecl; + zend_disable_class:function(class_name:zend_pchar; class_name_length:size_t):longint; cdecl; + zend_is_callable_ex:function(callable:Pzval; _object:Pzend_object; check_flags:uint; callable_name:PP_zend_string; fcc:Pzend_fcall_info_cache; error:PPchar):zend_bool; cdecl; + zend_is_callable:function(callable:Pzval; check_flags:uint; callable_name:PP_zend_string):zend_bool; cdecl; + zend_make_callable:function(callable:Pzval; callable_name:PP_zend_string):zend_bool; cdecl; + zend_get_module_version:function(module_name:zend_pchar):zend_pchar; cdecl; + zend_get_module_started:function(module_name:zend_pchar):longint; cdecl; + zend_declare_property_ex:function(ce:Pzend_class_entry; name:Pzend_string; _property:Pzval; access_type:longint; doc_comment:Pzend_string):longint; cdecl; + zend_declare_property:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; _property:Pzval; access_type:longint):longint; cdecl; + zend_declare_property_null:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; access_type:longint):longint; cdecl; + zend_declare_property_bool:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_long; access_type:longint):longint; cdecl; + zend_declare_property_long:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_long; access_type:longint):longint; cdecl; + zend_declare_property_double:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:double; access_type:longint):longint; cdecl; + zend_declare_property_string:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar; access_type:longint):longint; cdecl; + zend_declare_property_stringl:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar; value_len:size_t; access_type:longint):longint; cdecl; + zend_declare_class_constant:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:Pzval):longint; cdecl; + zend_declare_class_constant_null:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t):longint; cdecl; + zend_declare_class_constant_long:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_long):longint; cdecl; + zend_declare_class_constant_bool:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_bool):longint; cdecl; + zend_declare_class_constant_double:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:double):longint; cdecl; + zend_declare_class_constant_stringl:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar; value_length:size_t):longint; cdecl; + zend_declare_class_constant_string:function(ce:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar):longint; cdecl; + zend_update_class_constants:function(class_type:Pzend_class_entry):longint; cdecl; + zend_update_property_ex:procedure(scope:Pzend_class_entry; _object:Pzval; name:Pzend_string; value:Pzval); cdecl; + zend_update_property:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:Pzval); cdecl; + zend_update_property_null:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t); cdecl; + zend_update_property_bool:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:zend_long); cdecl; + zend_update_property_long:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:zend_long); cdecl; + zend_update_property_double:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:double); cdecl; + zend_update_property_str:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:Pzend_string); cdecl; + zend_update_property_string:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:zend_pchar); cdecl; + zend_update_property_stringl:procedure(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; value:zend_pchar; value_length:size_t); cdecl; + zend_update_static_property:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:Pzval):longint; cdecl; + zend_update_static_property_null:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t):longint; cdecl; + zend_update_static_property_bool:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_long):longint; cdecl; + zend_update_static_property_long:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_long):longint; cdecl; + zend_update_static_property_double:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:double):longint; cdecl; + zend_update_static_property_string:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar):longint; cdecl; + zend_update_static_property_stringl:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; value:zend_pchar; value_length:size_t):longint; cdecl; + zend_read_property:function(scope:Pzend_class_entry; _object:Pzval; name:zend_pchar; name_length:size_t; silent:zend_bool; rv:Pzval):Pzval; cdecl; + zend_read_static_property:function(scope:Pzend_class_entry; name:zend_pchar; name_length:size_t; silent:zend_bool):Pzval; cdecl; + zend_get_type_by_const:function(_type:longint):zend_pchar; cdecl; + _array_init:function(arg:Pzval; size:Cardinal):longint; cdecl; + _object_init:function(arg:Pzval; __zend_filename:zend_pchar; __zend_lineno:uint):longint; cdecl; + _object_init_ex:function(arg:Pzval; ce:Pzend_class_entry; __zend_filename:zend_pchar; __zend_lineno:uint):longint; cdecl; + _object_and_properties_init:function(arg:Pzval; ce:Pzend_class_entry; properties:PHashTable; __zend_filename:zend_pchar; __zend_lineno:uint):longint; cdecl; + object_properties_init:procedure(_object:Pzend_object; class_type:Pzend_class_entry); cdecl; + object_properties_init_ex:procedure(_object:Pzend_object; properties:PHashTable); cdecl; + object_properties_load:procedure(_object:Pzend_object; properties:PHashTable); cdecl; + zend_merge_properties:procedure(obj:Pzval; properties:PHashTable); cdecl; + add_assoc_long_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; n:zend_long):longint; cdecl; + add_assoc_null_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t):longint; cdecl; + add_assoc_bool_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; b:longint):longint; cdecl; + add_assoc_resource_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; r:Pzend_resource):longint; cdecl; + add_assoc_double_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; d:double):longint; cdecl; + add_assoc_str_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:Pzend_string):longint; cdecl; + add_assoc_string_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:zend_pchar):longint; cdecl; + add_assoc_stringl_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:zend_pchar; length:size_t):longint; cdecl; + add_assoc_zval_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; value:Pzval):longint; cdecl; + add_index_long:function(arg:Pzval; idx:zend_ulong; n:zend_long):longint; cdecl; + add_index_null:function(arg:Pzval; idx:zend_ulong):longint; cdecl; + add_index_bool:function(arg:Pzval; idx:zend_ulong; b:longint):longint; cdecl; + add_index_resource:function(arg:Pzval; idx:zend_ulong; r:Pzend_resource):longint; cdecl; + add_index_double:function(arg:Pzval; idx:zend_ulong; d:double):longint; cdecl; + add_index_str:function(arg:Pzval; idx:zend_ulong; str:Pzend_string):longint; cdecl; + add_index_string:function(arg:Pzval; idx:zend_ulong; str:zend_pchar):longint; cdecl; + add_index_stringl:function(arg:Pzval; idx:zend_ulong; str:zend_pchar; length:size_t):longint; cdecl; + add_index_zval:function(arg:Pzval; index:zend_ulong; value:Pzval):longint; cdecl; + add_next_index_long:function(arg:Pzval; n:zend_long):longint; cdecl; + add_next_index_null:function(arg:Pzval):longint; cdecl; + add_next_index_bool:function(arg:Pzval; b:longint):longint; cdecl; + add_next_index_resource:function(arg:Pzval; r:Pzend_resource):longint; cdecl; + add_next_index_double:function(arg:Pzval; d:double):longint; cdecl; + add_next_index_str:function(arg:Pzval; str:Pzend_string):longint; cdecl; + add_next_index_string:function(arg:Pzval; str:zend_pchar):longint; cdecl; + add_next_index_stringl:function(arg:Pzval; str:zend_pchar; length:size_t):longint; cdecl; + add_next_index_zval:function(arg:Pzval; value:Pzval):longint; cdecl; + add_get_assoc_string_ex:function(arg:Pzval; key:zend_pchar; key_len:uint; str:zend_pchar):Pzval; cdecl; + add_get_assoc_stringl_ex:function(arg:Pzval; key:zend_pchar; key_len:uint; str:zend_pchar; length:size_t):Pzval; cdecl; + add_get_index_long:function(arg:Pzval; idx:zend_ulong; l:zend_long):Pzval; cdecl; + add_get_index_double:function(arg:Pzval; idx:zend_ulong; d:double):Pzval; cdecl; + add_get_index_str:function(arg:Pzval; index:zend_ulong; str:Pzend_string):Pzval; cdecl; + add_get_index_string:function(arg:Pzval; idx:zend_ulong; str:zend_pchar):Pzval; cdecl; + add_get_index_stringl:function(arg:Pzval; idx:zend_ulong; str:zend_pchar; length:size_t):Pzval; cdecl; + array_set_zval_key:function(ht:PHashTable; key:Pzval; value:Pzval):longint; cdecl; + add_property_long_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; l:zend_long):longint; cdecl; + add_property_null_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t):longint; cdecl; + add_property_bool_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; b:zend_long):longint; cdecl; + add_property_resource_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; r:Pzend_resource):longint; cdecl; + add_property_double_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; d:double):longint; cdecl; + add_property_str_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:Pzend_string):longint; cdecl; + add_property_string_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:zend_pchar):longint; cdecl; + add_property_stringl_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; str:zend_pchar; length:size_t):longint; cdecl; + add_property_zval_ex:function(arg:Pzval; key:zend_pchar; key_len:size_t; value:Pzval):longint; cdecl; + call_user_function:function(function_table:PHashTable; _object:Pzval; function_name:Pzval; retval_ptr:Pzval; param_count:Cardinal; params:Pzval):longint; cdecl; + call_user_function_ex:function(function_table:PHashTable; _object:Pzval; function_name:Pzval; retval_ptr:Pzval; param_count:Cardinal; params:Pzval; no_separation:longint; symbol_table:Pzend_array):longint; cdecl; + zend_fcall_info_init:function(callable:Pzval; check_flags:uint; fci:Pzend_fcall_info; fcc:Pzend_fcall_info_cache; callable_name:PP_zend_string; error:PPchar):longint; cdecl; + zend_fcall_info_args_clear:procedure(fci:Pzend_fcall_info; free_mem:longint); cdecl; + zend_fcall_info_args_save:procedure(fci:Pzend_fcall_info; param_count:Plongint; params:PPzval); cdecl; + zend_fcall_info_args_restore:procedure(fci:Pzend_fcall_info; param_count:longint; params:Pzval); cdecl; + zend_fcall_info_args:function(fci:Pzend_fcall_info; args:Pzval):longint; cdecl; + zend_fcall_info_args_ex:function(fci:Pzend_fcall_info; func:Pzend_function; args:Pzval):longint; cdecl; + zend_fcall_info_argp:function(fci:Pzend_fcall_info; argc:longint; argv:Pzval):longint; cdecl; + zend_fcall_info_argv:function(fci:Pzend_fcall_info; argc:longint; argv:pPChar):longint; cdecl; + zend_fcall_info_argn:function(fci:Pzend_fcall_info; argc:longint):longint; cdecl varargs; + zend_fcall_info_call:function(fci:Pzend_fcall_info; fcc:Pzend_fcall_info_cache; retval:Pzval; args:Pzval):longint; cdecl; + zend_call_function:function(fci:Pzend_fcall_info; fci_cache:Pzend_fcall_info_cache):longint; cdecl; + zend_set_hash_symbol:function(symbol:Pzval; name:zend_pchar; name_length:longint; is_ref:zend_bool; num_symbol_tables:longint; args:array of const):longint; cdecl; + zend_delete_global_variable:function(name:Pzend_string):longint; cdecl; + zend_rebuild_symbol_table:function:P_zend_array cdecl; + zend_attach_symbol_table:procedure(execute_data:P_zend_execute_data); cdecl; + zend_detach_symbol_table:procedure(execute_data:P_zend_execute_data); cdecl; + zend_set_local_var:function(name:Pzend_string; value:Pzval; force:longint):longint; cdecl; + zend_set_local_var_str:function(name:zend_pchar; len:size_t; value:Pzval; force:longint):longint; cdecl; + zend_find_alias_name:function(ce:Pzend_class_entry; name:Pzend_string):P_zend_string; cdecl; + zend_resolve_method_name:function(ce:Pzend_class_entry; f:Pzend_function):P_zend_string; cdecl; + zend_get_object_type:function(ce:Pzend_class_entry):zend_pchar; cdecl; + zend_wrong_paramers_count_error:procedure(num_args:longint; min_num_args:longint; max_num_args:longint); cdecl; + zend_wrong_paramer_type_error:procedure(num:longint; expected_type:Ppointer; arg:Pzval); cdecl; + zend_wrong_paramer_class_error:procedure(num:longint; name:zend_pchar; arg:Pzval); cdecl; + zend_wrong_callback_error:procedure(severity:longint; num:longint; error:zend_pchar); cdecl; + zend_parse_arg_class:function(arg:Pzval; pce:PP_zend_class_entry; num:longint; check_null:longint):longint; cdecl; + zend_parse_arg_bool_slow:function(arg:Pzval; dest:Pzend_bool):longint; cdecl; + zend_parse_arg_bool_weak:function(arg:Pzval; dest:Pzend_bool):longint; cdecl; + zend_parse_arg_long_slow:function(arg:Pzval; dest:Pzend_long):longint; cdecl; + zend_parse_arg_long_weak:function(arg:Pzval; dest:Pzend_long):longint; cdecl; + zend_parse_arg_long_cap_slow:function(arg:Pzval; dest:Pzend_long):longint; cdecl; + zend_parse_arg_long_cap_weak:function(arg:Pzval; dest:Pzend_long):longint; cdecl; + zend_parse_arg_double_slow:function(arg:Pzval; dest:Pdouble):longint; cdecl; + zend_parse_arg_double_weak:function(arg:Pzval; dest:Pdouble):longint; cdecl; + zend_parse_arg_str_slow:function(arg:Pzval; dest:PP_zend_string):longint; cdecl; + zend_parse_arg_str_weak:function(arg:Pzval; dest:PP_zend_string):longint; cdecl; + module_destructor:procedure(module:Pzend_module_entry); cdecl; + module_registry_request_startup:function(module:Pzend_module_entry):longint; cdecl; + module_registry_unload_temp:function(module:Pzend_module_entry):longint; cdecl; + + + sapi_startup:procedure( sf:p_sapi_module_struct); cdecl; + sapi_shutdown:procedure; cdecl; + sapi_activate:procedure; cdecl; + sapi_deactivate:procedure; cdecl; + sapi_initialize_empty_request:procedure; cdecl; + sapi_header_op:function(op:sapi_header_op_enum; arg:Ppointer):longint; cdecl; + sapi_add_header_ex:function(header_line:zend_pchar; header_line_len:size_t; duplicate:zend_bool; replace:zend_bool):longint; cdecl; + sapi_send_headers:function:longint; cdecl; + sapi_free_header:procedure(sapi_header:Psapi_header_struct); cdecl; + sapi_handle_post:procedure(arg:Ppointer); cdecl; + sapi_read_post_block:function(buffer:zend_pchar; buflen:size_t):size_t; cdecl; + sapi_register_post_entries:function(post_entry:Psapi_post_entry):longint; cdecl; + sapi_register_post_entry:function(post_entry:Psapi_post_entry):longint; cdecl; + sapi_unregister_post_entry:procedure(post_entry:Psapi_post_entry); cdecl; + sapi_register_default_post_reader:pointer; + sapi_register_treat_data:function(treat_data:pointer):longint; + sapi_register_input_filter:function(input_filter:pointer; input_filter_init:pointer):longint; + sapi_flush:function:longint; cdecl; + sapi_get_stat:function:P_zend_stat_t; cdecl; + sapi_getenv:function(name:zend_pchar; name_len:size_t):zend_pchar; cdecl; + sapi_get_default_content_type:function:zend_pchar; cdecl; + sapi_get_default_content_type_header:procedure(default_header:Psapi_header_struct); cdecl; + sapi_apply_default_charset:function(mimetype:PPchar; len:size_t):size_t; cdecl; + sapi_activate_headers_only:procedure; cdecl; + sapi_get_fd:function(fd:Plongint):longint; cdecl; + sapi_force_http_10:function:longint; cdecl; + sapi_get_target_uid:function(_para1:Puid_t):longint; cdecl; + sapi_get_target_gid:function(_para1:Pgid_t):longint; cdecl; + sapi_get_request_time:function:double; cdecl; + sapi_terminate_process:procedure; cdecl; +_php_stream_alloc:function(ops:Pphp_stream_ops; _abstract:Ppointer; persistent_id:zend_pchar; mode:zend_pchar; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream; cdecl; +_php_stream_tell:function(stream:Pphp_stream):zend_off_t; cdecl; +_php_stream_read:function(stream:Pphp_stream; buf:zend_pchar; count:size_t):size_t; cdecl; +_php_stream_write:function(stream:Pphp_stream; buf:zend_pchar; count:size_t):size_t; cdecl; +_php_stream_fill_read_buffer:procedure(stream:Pphp_stream; size:size_t); cdecl; +_php_stream_printf:function(stream:Pphp_stream; fmt:zend_pchar):size_t; cdecl varargs; +_php_stream_eof:function(stream:Pphp_stream):longint; cdecl; +_php_stream_seek:function(stream:Pphp_stream; offset:zend_off_t; whence:longint):longint; cdecl; +_php_stream_free:function(stream:Pphp_stream; close_options:longint):longint; cdecl; +php_stream_encloses:function(enclosing:Pphp_stream; enclosed:Pphp_stream):P_php_stream; cdecl; +_php_stream_free_enclosed:function(stream_enclosed:Pphp_stream; close_options:longint):longint; cdecl; +php_stream_from_persistent_id:function(persistent_id:zend_pchar; stream:PP_php_stream):longint; cdecl; +php_file_le_stream:function:longint; cdecl; +php_file_le_pstream:function:longint; cdecl; +php_file_le_stream_filter:function:longint; cdecl; +_php_stream_getc:function(stream:Pphp_stream):longint; cdecl; +_php_stream_putc:function(stream:Pphp_stream; c:longint):longint; cdecl; +_php_stream_flush:function(stream:Pphp_stream; closing:longint):longint; cdecl; +_php_stream_get_line:function(stream:Pphp_stream; buf:zend_pchar; maxlen:size_t; returned_len:Psize_t):zend_pchar; cdecl; +_php_stream_get_url_stream_wrappers_hash:function:PHashTable; cdecl; +php_stream_get_url_stream_wrappers_hash_global:function:PHashTable; cdecl; +_php_get_stream_filters_hash:function:PHashTable; cdecl; +php_get_stream_filters_hash_global:function:PHashTable; cdecl; +_php_stream_truncate_set_size:function(stream:Pphp_stream; newsize:size_t):longint; cdecl; +_php_stream_make_seekable:function(origstream:Pphp_stream; newstream:PP_php_stream; flags:longint; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):longint; cdecl; +_php_stream_copy_to_stream:function(src:Pphp_stream; dest:Pphp_stream; maxlen:size_t; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):size_t; cdecl; +_php_stream_copy_to_mem:function(src:Pphp_stream; maxlen:size_t; persistent:longint; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_zend_string; cdecl; +_php_stream_copy_to_stream_ex:function(src:Pphp_stream; dest:Pphp_stream; maxlen:size_t; len:Psize_t; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):longint; cdecl; +_php_stream_passthru:function(src:Pphp_stream; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):size_t; cdecl; +_php_stream_cast:function(stream:Pphp_stream; castas:longint; ret:Ppointer; show_err:longint):longint; cdecl; +php_register_url_stream_wrapper:function(protocol:zend_pchar; wrapper:Pphp_stream_wrapper):longint; cdecl; +php_unregister_url_stream_wrapper:function(protocol:zend_pchar):longint; cdecl; +php_register_url_stream_wrapper_volatile:function(protocol:zend_pchar; wrapper:Pphp_stream_wrapper):longint; cdecl; +php_unregister_url_stream_wrapper_volatile:function(protocol:zend_pchar):longint; cdecl; +_php_stream_open_wrapper_ex:function(path:zend_pchar; mode:zend_pchar; options:longint; opened_path:PP_zend_string; context:Pphp_stream_context; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream; cdecl; +php_stream_locate_url_wrapper:function(path:zend_pchar; path_for_open:PPchar; options:longint):P_php_stream_wrapper; cdecl; +php_stream_locate_eol:function(stream:Pphp_stream; buf:Pzend_string):zend_pchar; cdecl; +php_stream_get_record:function(stream:Pphp_stream; maxlen:size_t; delim:zend_pchar; delim_len:size_t):P_zend_string; cdecl; +php_stream_wrapper_log_error:procedure(wrapper:Pphp_stream_wrapper; options:longint; fmt:zend_pchar); cdecl varargs; +_php_stream_puts:function(stream:Pphp_stream; buf:zend_pchar):longint; cdecl; +_php_stream_stat:function(stream:Pphp_stream; ssb:Pphp_stream_statbuf):longint; cdecl; +_php_stream_stat_path:function(path:zend_pchar; flags:longint; ssb:Pphp_stream_statbuf; context:Pphp_stream_context):longint; cdecl; +_php_stream_mkdir:function(path:zend_pchar; mode:longint; options:longint; context:Pphp_stream_context):longint; cdecl; +_php_stream_rmdir:function(path:zend_pchar; options:longint; context:Pphp_stream_context):longint; cdecl; +_php_stream_opendir:function(path:zend_pchar; options:longint; context:Pphp_stream_context; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream; cdecl; +_php_stream_readdir:function(dirstream:Pphp_stream; ent:Pphp_stream_dirent):Pphp_stream_dirent; cdecl; +php_stream_dirent_alphasort:function(a:PP_zend_string; b:PP_zend_string):longint; cdecl; +php_stream_dirent_alphasortr:function(a:PP_zend_string; b:PP_zend_string):longint; cdecl; + _php_stream_scandir:function(dirname:zend_pchar; namelist:PPP_zend_string; flags:longint; context:Pphp_stream_context; compare:pointer):longint; +_php_stream_set_option:function(stream:Pphp_stream; option:longint; value:longint; ptrparam:Ppointer):longint; cdecl; +php_stream_context_free:procedure(context:Pphp_stream_context); cdecl; +php_stream_context_alloc:function:P_php_stream_context; cdecl; +php_stream_context_get_option:function(context:Pphp_stream_context; wrappername:zend_pchar; optionname:zend_pchar):Pzval; cdecl; +php_stream_context_set_option:function(context:Pphp_stream_context; wrappername:zend_pchar; optionname:zend_pchar; optionvalue:Pzval):longint; cdecl; +php_stream_notification_alloc:function:P_php_stream_notifier; cdecl; +php_stream_notification_free:procedure(notifier:P_php_stream_notifier); cdecl; +php_stream_notification_notify:procedure(context:Pphp_stream_context; notifycode:longint; severity:longint; xmsg:zend_pchar; xcode:longint; +bytes_sofar:size_t; bytes_max:size_t; ptr:Ppointer); +php_stream_context_set:function(stream:Pphp_stream; context:Pphp_stream_context):P_php_stream_context; cdecl; +zend_llist_init:procedure(l:Pzend_llist; size:size_t; dtor:llist_dtor_func_t; persistent:byte); cdecl; +zend_llist_add_element:procedure(l:Pzend_llist; element:Ppointer); cdecl; +zend_llist_prepend_element:procedure(l:Pzend_llist; element:Ppointer); cdecl; +zend_llist_del_element:procedure(l:Pzend_llist; element:Ppointer; compare:ERGERG43T4T545YH546); +zend_llist_destroy:procedure(l:Pzend_llist); cdecl; +zend_llist_clean:procedure(l:Pzend_llist); cdecl; +zend_llist_remove_tail:procedure(l:Pzend_llist); cdecl; +zend_llist_copy:procedure(dst:Pzend_llist; src:Pzend_llist); cdecl; +zend_llist_apply:procedure(l:Pzend_llist; func:llist_apply_func_t); cdecl; +zend_llist_apply_with_del:procedure(l:Pzend_llist; func:RGEKG34I9TI3434); cdecl; +zend_llist_apply_with_argument:procedure(l:Pzend_llist; func:llist_apply_with_arg_func_t; arg:Ppointer); cdecl; +zend_llist_apply_with_arguments:procedure(l:Pzend_llist; func:llist_apply_with_args_func_t; num_args:longint); cdecl varargs; +zend_llist_count:function(l:Pzend_llist):size_t; cdecl; +zend_llist_sort:procedure(l:Pzend_llist; comp_func:llist_compare_func_t); cdecl; +zend_llist_get_first_ex:function(l:Pzend_llist; pos:Pzend_llist_position):pointer; cdecl; +zend_llist_get_last_ex:function(l:Pzend_llist; pos:Pzend_llist_position):pointer; cdecl; +zend_llist_get_next_ex:function(l:Pzend_llist; pos:Pzend_llist_position):pointer; cdecl; +zend_llist_get_prev_ex:function(l:Pzend_llist; pos:Pzend_llist_position):pointer; cdecl; +php_stream_filter_register_factory:function(filterpattern:zend_pchar; factory:Pphp_stream_filter_factory):longint; cdecl; +php_stream_filter_unregister_factory:function(filterpattern:zend_pchar):longint; cdecl; +php_stream_filter_register_factory_volatile:function(filterpattern:zend_pchar; factory:Pphp_stream_filter_factory):longint; cdecl; +php_stream_filter_create:function(filtername:zend_pchar; filterparams:Pzval; persistent:longint):P_php_stream_filter; cdecl; +_php_stream_filter_prepend:procedure(chain:Pphp_stream_filter_chain; filter:Pphp_stream_filter); cdecl; +php_stream_filter_prepend_ex:function(chain:Pphp_stream_filter_chain; filter:Pphp_stream_filter):longint; cdecl; +_php_stream_filter_append:procedure(chain:Pphp_stream_filter_chain; filter:Pphp_stream_filter); cdecl; +php_stream_filter_append_ex:function(chain:Pphp_stream_filter_chain; filter:Pphp_stream_filter):longint; cdecl; +_php_stream_filter_flush:function(filter:Pphp_stream_filter; finish:longint):longint; cdecl; +php_stream_filter_remove:function(filter:Pphp_stream_filter; call_dtor:longint):P_php_stream_filter; cdecl; +php_stream_filter_free:procedure(filter:Pphp_stream_filter); cdecl; +_php_stream_filter_alloc:function(fops:Pphp_stream_filter_ops; _abstract:Ppointer; persistent:longint; __php_stream_call_depth:longint; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint):P_php_stream_filter; cdecl; +php_stream_bucket_new:function(stream:Pphp_stream; buf:zend_pchar; buflen:size_t; own_buf:longint; buf_persistent:longint):P_php_stream_bucket; cdecl; +php_stream_bucket_split:function(_in:Pphp_stream_bucket; left:PP_php_stream_bucket; right:PP_php_stream_bucket; length:size_t):longint; cdecl; +php_stream_bucket_delref:procedure(bucket:Pphp_stream_bucket); cdecl; +php_stream_bucket_prepend:procedure(brigade:Pphp_stream_bucket_brigade; bucket:Pphp_stream_bucket); cdecl; +php_stream_bucket_append:procedure(brigade:Pphp_stream_bucket_brigade; bucket:Pphp_stream_bucket); cdecl; +php_stream_bucket_unlink:procedure(bucket:Pphp_stream_bucket); cdecl; +php_stream_bucket_make_writeable:function(bucket:Pphp_stream_bucket):P_php_stream_bucket; cdecl; +zend_init_execute_data:procedure(execute_data:Pzend_execute_data; op_array:Pzend_op_array; return_value:Pzval); cdecl; +zend_create_generator_execute_data:function(call:Pzend_execute_data; op_array:Pzend_op_array; return_value:Pzval):P_zend_execute_data; cdecl; +zend_execute:procedure(op_array:Pzend_op_array; return_value:Pzval); cdecl; +execute_ex:procedure(execute_data:Pzend_execute_data); cdecl; +execute_internal:procedure(execute_data:Pzend_execute_data; return_value:Pzval); cdecl; +zend_lookup_class:function(name:Pzend_string):P_zend_class_entry; cdecl; +zend_lookup_class_ex:function(name:Pzend_string; key:Pzval; use_autoload:longint):P_zend_class_entry; cdecl; +zend_get_called_scope:function(ex:Pzend_execute_data):P_zend_class_entry; cdecl; +zend_get_this_object:function(ex:Pzend_execute_data):P_zend_object; cdecl; +zend_eval_string:function(str:zend_pchar; retval_ptr:Pzval; string_name:zend_pchar):longint; cdecl; +zend_eval_stringl:function(str:zend_pchar; str_len:size_t; retval_ptr:Pzval; string_name:zend_pchar):longint; cdecl; +zend_eval_string_ex:function(str:zend_pchar; retval_ptr:pzval; string_name:zend_pchar; handle_exceptions:longint):longint; cdecl; +zend_eval_stringl_ex:function(str:zend_pchar; str_len:size_t; retval_ptr:Pzval; string_name:zend_pchar; handle_exceptions:longint):longint; cdecl; +zval_update_constant:function(pp:Pzval; inline_change:zend_bool):longint; cdecl; +zval_update_constant_ex:function(pp:Pzval; inline_change:zend_bool; scope:Pzend_class_entry):longint; cdecl; +zend_vm_stack_init:procedure; cdecl; +zend_vm_stack_destroy:procedure; cdecl; +zend_vm_stack_extend:function(size:size_t):pointer; cdecl; +get_active_class_name:function(space:PPchar):zend_pchar; cdecl; +get_active_function_name:function:zend_pchar; cdecl; +zend_get_executed_filename:function:zend_pchar; cdecl; +zend_get_executed_filename_ex:function:P_zend_string; cdecl; +zend_get_executed_lineno:function:uint; cdecl; +zend_is_executing:function:zend_bool; cdecl; +zend_set_timeout:procedure(seconds:zend_long; reset_signals:longint); cdecl; +zend_unset_timeout:procedure; cdecl; +zend_timeout:procedure(dummy:longint); cdecl; +zend_fetch_class:function(class_name:Pzend_string; fetch_type:longint):P_zend_class_entry; cdecl; +zend_fetch_class_by_name:function(class_name:Pzend_string; key:Pzval; fetch_type:longint):P_zend_class_entry; cdecl; +zend_fetch_dimension_by_zval:procedure(result:Pzval; container:Pzval; dim:Pzval); cdecl; +zend_fetch_dimension_by_zval_is:procedure(result:Pzval; container:Pzval; dim:Pzval; dim_type:longint); cdecl; +EX_VAR:function(execute_data_ptr:Pzend_execute_data; _var:uint32_t):Pzval; cdecl; +zend_set_user_opcode_handler:function(opcode:zend_uchar; handler:user_opcode_handler_t):longint; cdecl; +zend_get_user_opcode_handler:function(opcode:zend_uchar):user_opcode_handler_t; cdecl; +zend_get_zval_ptr:function(op_type:longint; node:Pznode_op; execute_data:Pzend_execute_data; should_free:Pzend_free_op; _type:longint):Pzval; cdecl; +zend_clean_and_cache_symbol_table:procedure(symbol_table:Pzend_array); cdecl; +zend_objects_store_init:procedure(objects:Pzend_objects_store; init_size:uint32_t); cdecl; +zend_objects_store_call_destructors:procedure(objects:Pzend_objects_store); cdecl; +zend_objects_store_mark_destructed:procedure(objects:Pzend_objects_store); cdecl; +zend_objects_store_destroy:procedure(objects:Pzend_objects_store); cdecl; +zend_objects_store_put:procedure(_object:Pzend_object); cdecl; +zend_objects_store_del:procedure(_object:Pzend_object); cdecl; +zend_objects_store_free:procedure(_object:Pzend_object); cdecl; +zend_object_store_set_object:procedure(zobject:Pzval; _object:Pzend_object); cdecl; +zend_object_store_ctor_failed:procedure(_object:Pzend_object); cdecl; +zend_objects_store_free_object_storage:procedure(objects:Pzend_objects_store); cdecl; +zend_get_std_object_handlers:function:P_zend_object_handlers; cdecl; + +zend_ptr_stack_init:procedure(stack:Pzend_ptr_stack); cdecl; +zend_ptr_stack_init_ex:procedure(stack:Pzend_ptr_stack; persistent:zend_bool); cdecl; +zend_ptr_stack_n_push:procedure(stack:Pzend_ptr_stack; count:longint; args:array of const); cdecl; +zend_ptr_stack_n_pop:procedure(stack:Pzend_ptr_stack; count:longint; args:array of const); cdecl; +zend_ptr_stack_destroy:procedure(stack:Pzend_ptr_stack); cdecl; +zend_ptr_stack_apply:procedure(stack:Pzend_ptr_stack; func:EWFG439EGRG45); cdecl; +zend_ptr_stack_clean:procedure(stack:Pzend_ptr_stack; func:G5J90E4GK495Y4; free_elements:zend_bool); cdecl; +zend_ptr_stack_num_elements:function(stack:Pzend_ptr_stack):longint; cdecl; +zend_ini_startup:function:longint; cdecl; +zend_ini_shutdown:function:longint; cdecl; +zend_ini_global_shutdown:function:longint; cdecl; +zend_ini_deactivate:function:longint; cdecl; +zend_ini_dtor:procedure(ini_directives:PHashTable); cdecl; +zend_copy_ini_directives:function:longint; cdecl; +zend_ini_sort_entries:procedure; cdecl; +zend_register_ini_entries:function(ini_entry:Pzend_ini_entry_def; module_number:longint):longint; cdecl; +zend_unregister_ini_entries:procedure(module_number:longint); cdecl; +zend_ini_refresh_caches:procedure(stage:longint); cdecl; +zend_alter_ini_entry:function( name:zend_string; new_value:Pzend_string; modify_type:longint; stage:longint):longint; cdecl; +zend_alter_ini_entry_ex:function(name:Pzend_string; new_value:Pzend_string; modify_type:longint; stage:longint; force_change:longint):longint; cdecl; +zend_alter_ini_entry_chars:function(name:Pzend_string; value:Pchar; value_length:size_t; modify_type:longint; stage:longint):longint; cdecl; +zend_alter_ini_entry_chars_ex:function(name:Pzend_string; value:Pchar; value_length:size_t; modify_type:longint; stage:longint; force_change:longint):longint; cdecl; +zend_restore_ini_entry:function(name:Pzend_string; stage:longint):longint; cdecl; +display_ini_entries:procedure(module:Pzend_module_entry); cdecl; +zend_ini_long:function(name:Pchar; name_length:uint; orig:longint):zend_long; cdecl; +zend_ini_double:function(name:Pchar; name_length:uint; orig:longint):double; cdecl; +zend_ini_string:function(name:Pchar; name_length:uint; orig:longint):Pchar; cdecl; +zend_ini_string_ex:function(name:Pchar; name_length:uint; orig:longint; exists:Pzend_bool):Pchar; cdecl; +zend_ini_register_displayer:function(name:Pchar; name_length:uint; displayer:IEJORGJIERGE):longint; cdecl; +zend_parse_ini_file:function(fh:Pzend_file_handle; unbuffered_errors:zend_bool; scanner_mode:longint; ini_parser_cb:zend_ini_parser_cb_t; arg:Ppointer):longint; cdecl; +zend_parse_ini_string:function(str:Pchar; unbuffered_errors:zend_bool; scanner_mode:longint; ini_parser_cb:zend_ini_parser_cb_t; arg:Ppointer):longint; cdecl; + + + +_zend_hash_init:procedure(ht:PHashTable; nSize:uint32_t; pDestructor:dtor_func_t; persistent:zend_bool; __zend_filename:Pchar; __zend_lineno:uint); cdecl; +_zend_hash_init_ex:procedure(ht:PHashTable; nSize:uint32_t; pDestructor:dtor_func_t; persistent:zend_bool; bApplyProtection:zend_bool; __zend_filename:Pchar; __zend_lineno:uint); cdecl; +zend_hash_destroy:procedure(ht:PHashTable); cdecl; +zend_hash_clean:procedure(ht:PHashTable); cdecl; +zend_hash_real_init:procedure(ht:PHashTable; _packed:zend_bool); cdecl; +zend_hash_packed_to_hash:procedure(ht:PHashTable); cdecl; +zend_hash_to_packed:procedure(ht:PHashTable); cdecl; +zend_hash_extend:procedure(ht:PHashTable; nSize:uint32_t; _packed:zend_bool); cdecl; +_zend_hash_add_or_update:function(ht:PHashTable; key:Pzend_string; pData:Pzval; flag:uint32_t; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_update:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_update_ind:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_add:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_add_new:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_str_add_or_update:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; flag:uint32_t; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_str_update:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_str_update_ind:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_str_add:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_str_add_new:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_index_add_or_update:function(ht:PHashTable; h:zend_ulong; pData:Pzval; flag:uint32_t):Pzval; cdecl; +_zend_hash_index_add:function(ht:PHashTable; h:zend_ulong; pData:Pzval):Pzval; cdecl; +_zend_hash_index_add_new:function(ht:PHashTable; h:zend_ulong; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_index_update:function(ht:PHashTable; h:zend_ulong; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_next_index_insert:function(ht:PHashTable; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_next_index_insert_new:function(ht:PHashTable; pData:zval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +zend_hash_index_add_empty_element:function(ht:PHashTable; h:zend_ulong):Pzval; cdecl; +zend_hash_add_empty_element:function(ht:PHashTable; key:Pzend_string):Pzval; cdecl; +zend_hash_str_add_empty_element:function(ht:PHashTable; key:Pchar; len:size_t):Pzval; cdecl; +zend_hash_graceful_destroy:procedure(ht:PHashTable); cdecl; +zend_hash_graceful_reverse_destroy:procedure(ht:PHashTable); cdecl; +zend_hash_apply:procedure(ht:PHashTable; apply_func:Tapply_func_t); cdecl; +zend_hash_apply_with_argument:procedure(ht:PHashTable; apply_func:Tapply_func_arg_t; para3:pointer); cdecl; +zend_hash_apply_with_arguments:procedure(ht:PHashTable; apply_func:Tapply_func_args_t; para3:longint; args:array of const); cdecl; +zend_hash_reverse_apply:procedure(ht:PHashTable; apply_func:Tapply_func_t); cdecl; +zend_hash_del:function(ht:PHashTable; key:Pzend_string):longint; cdecl; +zend_hash_del_ind:function(ht:PHashTable; key:Pzend_string):longint; cdecl; +zend_hash_str_del:function(ht:PHashTable; key:Pchar; len:size_t):longint; cdecl; +zend_hash_str_del_ind:function(ht:PHashTable; key:Pchar; len:size_t):longint; cdecl; +zend_hash_index_del:function(ht:PHashTable; h:zend_ulong):longint; cdecl; +zend_hash_del_bucket:procedure(ht:PHashTable; p:PBucket); cdecl; +zend_hash_find:function(ht:PHashTable; key:Pzend_string):Pzval; cdecl; +zend_hash_str_find:function(ht:PHashTable; key:Pchar; len:size_t):Pzval; cdecl; + +zend_hash_index_findZval:function( ht:pzval; h:zend_ulong):Pzval; cdecl; +zend_symtable_findTest:function( ht:pzval; key:pzend_string):Pzval; cdecl; +zend_hash_index_existsZval:function( ht:pzval; h:zend_ulong):zend_bool; cdecl; + + +zend_hash_index_find:function(ht:PHashTable; h:zend_ulong):Pzval; cdecl; + +zend_hash_exists:function(ht:PHashTable; key:Pzend_string):zend_bool; cdecl; +zend_hash_str_exists:function(ht:PHashTable; str:Pchar; len:size_t):zend_bool; cdecl; +zend_hash_index_exists:function(ht:PHashTable; h:zend_ulong):zend_bool; cdecl; +zend_hash_has_more_elements_ex:function(ht,pos : longint) : longint; cdecl; +zend_hash_move_forward_ex:function(ht:PHashTable; pos:PHashPosition):longint; cdecl; +zend_hash_move_backwards_ex:function(ht:PHashTable; pos:PHashPosition):longint; cdecl; +zend_hash_get_current_key_ex:function(ht:PHashTable; str_index:PPzend_string; num_index:P_zend_ulong; pos:PHashPosition):longint; cdecl; +zend_hash_get_current_key_zval_ex:procedure(ht:PHashTable; key:Pzval; pos:PHashPosition); cdecl; +zend_hash_get_current_key_type_ex:function(ht:PHashTable; pos:PHashPosition):longint; cdecl; +zend_hash_get_current_data_ex:function(ht:PHashTable; pos:PHashPosition):Pzval; cdecl; +zend_hash_internal_pointer_reset_ex:procedure(ht:PHashTable; pos:PHashPosition); cdecl; +zend_hash_internal_pointer_end_ex:procedure(ht:PHashTable; pos:PHashPosition); cdecl; +zend_hash_copy:procedure(target:PHashTable; source:PHashTable; pCopyConstructor:copy_ctor_func_t; tmp: pointer; size: uint); cdecl; +_zend_hash_merge:procedure(target:PHashTable; source:PHashTable; pCopyConstructor:copy_ctor_func_t; size:uint; overwrite:zend_bool); cdecl; +zend_hash_merge_ex:procedure(target:PHashTable; source:PHashTable; pCopyConstructor:copy_ctor_func_t; pMergeSource:Tmerge_checker_func_t; pParam:Ppointer); cdecl; +zend_hash_bucket_swap:procedure(p:PBucket; q:PBucket); cdecl; +zend_hash_bucket_renum_swap:procedure(p:PBucket; q:PBucket); cdecl; +zend_hash_bucket_packed_swap:procedure(p:PBucket; q:PBucket); cdecl; +zend_hash_compare:function(ht1:PHashTable; ht2:PHashTable; compar:compare_func_t; ordered:zend_bool):longint; cdecl; +zend_hash_sort_ex:function(ht:PHashTable; sort_func:sort_func_t; compare_func:compare_func_t; renumber:zend_bool; TSRMLS_DC: pointer):longint; cdecl; +zend_hash_minmax:function(ht:PHashTable; compar:compare_func_t; flag:uint32_t):Pzval; cdecl; +zend_hash_rehash:function(ht:PHashTable):longint; cdecl; +zend_array_count:function(ht:PHashTable):uint32_t; cdecl; +zend_array_dup:function(source:PHashTable):PHashTable; cdecl; +zend_array_destroy:procedure(ht:PHashTable); cdecl; +zend_symtable_clean:procedure(ht:PHashTable); cdecl; +_zend_handle_numeric_str_ex:function(key:Pchar; length:size_t; idx:P_zend_ulong):longint; cdecl; +zend_hash_iterator_add:function(ht:PHashTable; pos:HashPosition):uint32_t; cdecl; +zend_hash_iterator_pos:function(idx:uint32_t; ht:PHashTable):HashPosition; cdecl; +zend_hash_iterator_pos_ex:function(idx:uint32_t; _array:Pzval):HashPosition; cdecl; +zend_hash_iterator_del:procedure(idx:uint32_t); cdecl; +zend_hash_iterators_lower_pos:function(ht:PHashTable; start:HashPosition):HashPosition; cdecl; +_zend_hash_iterators_update:procedure(ht:PHashTable; from:HashPosition; _to:HashPosition); cdecl; + +//tsrm_error:function(level:longint; format:zend_pchar; args:array of const):longint; cdecl; +//zend_mm_set_custom_handlers(heap:Pzend_mm_heap; _malloc:PEWKGERGJ945YG45; _free:procedure (_para1:pointer); var _realloc:procedure :procedure(_para1:pointer; _para2:size_t)); cdecl; +//zend_mm_get_custom_handlers(heap:Pzend_mm_heap; _malloc:PPOERGJOERJGIERGHRE; _free:Pprocedure (_para1:pointer); var _realloc:Pprocedure :procedure(_para1:pointer; _para2:size_t)); cdecl; +//zend_mm_set_custom_debug_handlers(heap:Pzend_mm_heap; var _malloc:procedure (_para1:size_t; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint); _free:procedure :procedure(_para1:pointer; __zend_filename:zend_pchar; __zend_lineno:uint; __zend_orig_filename:zend_pchar; __zend_orig_lineno:uint); _realloc:PERG4JG09E84GJ8945H45H); cdecl; +//zend_object_create_proxy:function(_object:Pzval; member:Pzval):P_zend_object; cdecl; +zend_check_internal_arg_type:procedure(zf:P_zend_function; arg_num:uint32_t; arg:Pzval); cdecl; +//zend_check_arg_type:function(zf:Pzend_function; arg_num:uint32_t; arg:Pzval; default_value:Pzval; cache_slot:Ppointer):longint; cdecl; +//zend_check_missing_arg:procedure(execute_data:Pzend_execute_data; arg_num:uint32_t; cache_slot:Ppointer); cdecl; + + +add_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +sub_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +mul_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +pow_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +div_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +mod_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +boolean_xor_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +boolean_not_function:function(result:Pzval; op1:Pzval):longint; cdecl; +bitwise_not_function:function(result:Pzval; op1:Pzval):longint; cdecl; +bitwise_or_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +bitwise_and_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +bitwise_xor_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +shift_left_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +shift_right_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +concat_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +zend_is_identical:function(op1:Pzval; op2:Pzval):longint; cdecl; +is_equal_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +is_identical_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +is_not_identical_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +is_not_equal_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +is_smaller_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +is_smaller_or_equal_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +instanceof_function_ex:function(instance_ce:Pzend_class_entry; ce:Pzend_class_entry; interfaces_only:zend_bool):zend_bool; cdecl; +instanceof_function:function(instance_ce:Pzend_class_entry; ce:Pzend_class_entry):zend_bool; cdecl; +_is_numeric_string_ex:function(str:Pchar; length:size_t; lval:Pzend_long; dval:Pdouble; allow_errors:longint; oflow_info:Plongint):zend_uchar; cdecl; +zend_memnstr_ex:function(haystack:Pchar; needle:Pchar; needle_len:size_t; _end:Pchar):Pchar; cdecl; +zend_memnrstr_ex:function(haystack:Pchar; needle:Pchar; needle_len:size_t; _end:Pchar):Pchar; cdecl; +zend_dval_to_lval_slow:function(d:double):zend_long; cdecl; +is_numeric_str_function:function(str:Pzend_string; lval:Pzend_long; dval:Pdouble):zend_uchar; cdecl; +increment_function:function(op1:Pzval):longint; cdecl; +decrement_function:function(op2:Pzval):longint; cdecl; +convert_scalar_to_number:procedure(op:Pzval); cdecl; +_convert_to_cstring:procedure(op:Pzval; __zend_filename:Pchar; __zend_lineno:uint); cdecl; +_convert_to_string:procedure(op:Pzval; __zend_filename:Pchar; __zend_lineno:uint); cdecl; +convert_to_long:procedure(op:Pzval); cdecl; +convert_to_double:procedure(op:Pzval); cdecl; +convert_to_long_base:procedure(op:Pzval; base:longint); cdecl; +convert_to_null:procedure(op:Pzval); cdecl; +convert_to_boolean:procedure(op:Pzval); cdecl; +convert_to_array:procedure(op:Pzval); cdecl; +convert_to_object:procedure(op:Pzval); cdecl; +multi_convert_to_long_ex:procedure(argc:longint; args:array of const); cdecl; +multi_convert_to_double_ex:procedure(argc:longint; args:array of const); cdecl; +multi_convert_to_string_ex:procedure(argc:longint; args:array of const); cdecl; +_zval_get_long_func:function(op:Pzval):zend_long; cdecl; +_zval_get_double_func:function(op:Pzval):double; cdecl; +_zval_get_string_func:function(op:Pzval):Pzend_string; cdecl; +zend_is_true:function(op:Pzval):longint; cdecl; +zend_object_is_true:function(op:Pzval):longint; cdecl; +compare_function:function(result:Pzval; op1:Pzval; op2:Pzval):longint; cdecl; +numeric_compare_function:function(op1:Pzval; op2:Pzval):longint; cdecl; +string_compare_function_ex:function(op1:Pzval; op2:Pzval; case_insensitive:zend_bool):longint; cdecl; +string_compare_function:function(op1:Pzval; op2:Pzval):longint; cdecl; +string_case_compare_function:function(op1:Pzval; op2:Pzval):longint; cdecl; +string_locale_compare_function:function(op1:Pzval; op2:Pzval):longint; cdecl; +zend_str_tolower:procedure(str:Pchar; length:size_t); cdecl; +zend_str_tolower_copy:function(dest:Pchar; source:Pchar; length:size_t):Pchar; cdecl; +zend_str_tolower_dup:function(source:Pchar; length:size_t):Pchar; cdecl; +zend_str_tolower_dup_ex:function(source:Pchar; length:size_t):Pchar; cdecl; +zend_string_tolower:function(str:Pzend_string):Pzend_string; cdecl; +zend_binary_zval_strcmp:function(s1:Pzval; s2:Pzval):longint; cdecl; +zend_binary_zval_strncmp:function(s1:Pzval; s2:Pzval; s3:Pzval):longint; cdecl; +zend_binary_zval_strcasecmp:function(s1:Pzval; s2:Pzval):longint; cdecl; +zend_binary_zval_strncasecmp:function(s1:Pzval; s2:Pzval; s3:Pzval):longint; cdecl; +zend_binary_strcmp:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t):longint; cdecl; +zend_binary_strncmp:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t; length:size_t):longint; cdecl; +zend_binary_strcasecmp:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t):longint; cdecl; +zend_binary_strncasecmp:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t; length:size_t):longint; cdecl; +zend_binary_strcasecmp_l:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t):longint; cdecl; +zend_binary_strncasecmp_l:function(s1:Pchar; len1:size_t; s2:Pchar; len2:size_t; length:size_t):longint; cdecl; +zendi_smart_strcmp:function(s1:Pzend_string; s2:Pzend_string):zend_long; cdecl; +zend_compare_symbol_tables:function(ht1:PHashTable; ht2:PHashTable):longint; cdecl; +zend_compare_arrays:function(a1:Pzval; a2:Pzval):longint; cdecl; +zend_compare_objects:function(o1:Pzval; o2:Pzval):longint; cdecl; +zend_atoi:function(str:Pchar; str_len:longint):longint; cdecl; +zend_atol:function(str:Pchar; str_len:longint):zend_long; cdecl; +zend_locale_sprintf_double:procedure(op:Pzval; __zend_filename:Pchar; __zend_lineno:uint); cdecl; +zend_update_current_locale:procedure; cdecl; +zend_long_to_str:function(num:zend_long):Pzend_string; cdecl; + +ZvalGetPChar:function(z:pzval):zend_pchar; cdecl; +ZvalSetPChar:procedure(z:pzval; p:zend_pchar; l, b:integer); cdecl; + +read_property22:function(elem:pzval; name:zend_pchar; flags:Integer):pzval; cdecl; +isset_property:function(_object:pzval; property_name:zend_pchar):Integer; cdecl; + + + +lookup_class_ce:function(ce:pzend_class_entry; property_name:zend_pchar; property_length:SIZE_T):pzend_class_entry; cdecl; +class_exists:function(class_name:zend_pchar):Integer; cdecl; +class_exists2:function(class_name:zend_pchar):Integer; cdecl; +update_property_zval:function(_object:pzval; property_name:zend_pchar; value:pzval):integer; cdecl; +__create_php_object:function(classname:pzend_string; return_value:pzval; __params:pzval; argc:Integer):pzend_class_entry; cdecl; + + + +__call_function:procedure(func:pzval; argv:pzval; argc:integer);cdecl; +safe_emalloc2:function(nmemb:size_t; size:size_t; offset:size_t):Pointer;cdecl; + +ZvalEmalloc:function(nmemb:size_t):pzval;cdecl; + +pZVAL_NEW_REF:procedure(arg1, arg2:pointer);cdecl; + +NewPzval:function(z:pzval):pzval;cdecl; + +CreateCll:function(result:pzval; class_name:zend_pchar; Self:integer):pzval;cdecl; + +PHPInitSetValue:procedure(name, new_value:zend_pchar; modify_type, stage:integer);cdecl; + +implementation + + +end. diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index fb42abc..7df32d9 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -38,6 +38,7 @@ interface uses Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, PHPCommon, WinApi.WinSock, + {$IFDEF PHP7} hzend_types, {$ENDIF} ZendTypes, PHPTypes, PHPAPI, ZENDAPI, DelphiFunctions, phpFunctions, strUtils, varUtils, {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} @@ -863,10 +864,15 @@ procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; else error_type_str := 'Unknown error'; end; - - php_log_err(zend_pchar( + {$IFDEF P_CUT} + ShowMessage(zend_pchar( {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} - ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])), p); + ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno]))); + {$ELSE} + php_log_err(zend_pchar( + {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} + ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])), p); + {$ENDIF} end; end; if PHPLoaded then @@ -1197,7 +1203,7 @@ function TpsvCustomPHP.Execute(AFileName: zend_ustr): zend_ustr; procedure TpsvCustomPHP.PrepareResult; var - ht : PHashTable; + ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; data: ^ppzval; cnt : integer; variable : pzval; @@ -1338,7 +1344,7 @@ procedure TpsvCustomPHP.ShutdownRequest; procedure TpsvCustomPHP.PrepareVariables; var - ht : PHashTable; + ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; data: ^ppzval; cnt : integer; {$IFDEF PHP5} @@ -1366,7 +1372,11 @@ procedure TpsvCustomPHP.PrepareVariables; if zend_hash_find(ht, zend_pchar(FVariables[cnt].Name), strlen(zend_pchar(FVariables[cnt].Name)) + 1, data) = SUCCESS then begin + {$IFDEF PHP7} + if (data^^^.u1.v._type = IS_STRING) then + {$ELSE} if (data^^^._type = IS_STRING) then + {$ENDIF} begin efree(data^^^.value.str.val); ZVAL_STRING(data^^, zend_pchar(FVariables[cnt].Value), true); From 2c9ba90f2a4570ebbaa690be5f6b10bcc754562d Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Tue, 23 Jul 2019 17:34:59 +0300 Subject: [PATCH 08/35] First steps to php7 support --- Source/DelphiFunctions.pas | 2 +- Source/PHP.INC | 6 +- Source/PHPAPI.pas | 3 +- Source/PHPFunctions.pas | 3 +- Source/PHPTypes.pas | 2 +- Source/ZENDAPI.pas | 129 ++++++++++++++++++++++++++++--------- Source/hzend_types.pas | 75 ++++++++++++++++++--- Source/php4delphi.pas | 3 +- 8 files changed, 171 insertions(+), 52 deletions(-) diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 03283df..e1fb504 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -692,7 +692,7 @@ procedure RegisterInternalClasses(p : pointer); begin {$IFDEF PHP7} - object_functions + ! {$ELSE} object_functions[0].fname := 'delphi_classname'; object_functions[0].handler := @delphi_object_classname; diff --git a/Source/PHP.INC b/Source/PHP.INC index 12e4bf3..6347b1e 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -62,9 +62,9 @@ backward compatibility between PHP versions. {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} -{..$DEFINE soulengine_build} -{..$DEFINE PHP7} -{..$DEFINE P_CUT} +{$DEFINE soulengine_build} +{.$DEFINE PHP7} +{.$DEFINE P_CUT} {$IFDEF PHP7} {$DEFINE COMPILER_VC14} {$DEFINE PHP560} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 1a05ab5..7d3a22e 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -29,8 +29,7 @@ interface Windows {$ENDIF}, - ZendTypes, - {$IFDEF PHP7} hzend_types,{$ENDIF} + {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} PHPTypes, zendAPI, diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index bf35afa..a913537 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -23,8 +23,7 @@ interface {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} {$IFDEF VERSION6} Variants, {$ENDIF} - {$IFDEF PHP7} hzend_types, {$ENDIF} - ZendTypes, PHPTypes, ZendAPI, PHPAPI ; + {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} PHPTypes, ZendAPI, PHPAPI ; type TParamType = (tpString, tpInteger, tpFloat, tpBoolean, tpArray, tpUnknown); diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 6b80fd4..3d00f20 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -16,7 +16,7 @@ interface uses - {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7}hzend_types,{$ENDIF} ZENDTypes; + {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7} hzend_types {$ELSE} ZendTypes {$ENDIF}; {$IFDEF PHP4} const diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 3702676..3e61ec3 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -21,8 +21,7 @@ interface uses {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, SysUtils, - {$IFDEF PHP7} hzend_types, {$ENDIF} - ZendTypes, Variants, + {$IFDEF PHP7} hzend_types, {$ElSE} ZendTypes, {$ENDIF} Variants, PHPTypes; type TArrayVariant = array of variant; @@ -218,8 +217,9 @@ function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; a var zend_hash_graceful_destroy : procedure(ht: PHashTable); cdecl; + {$IFNDEF PHP7} zend_hash_graceful_reverse_destroy : zend_hash_graceful_reverse_destroy_t; - + {$ENDIF} zend_hash_apply : procedure(ht: PHashTable; apply_func: pointer; TSRMLS_DC: Pointer); cdecl; zend_hash_apply_with_argument : procedure(ht: PHashTable; @@ -332,8 +332,17 @@ procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} zend_register_constant : function(var c: zend_constant; TSRMLS_DC: Pointer): Integer; cdecl; - zend_register_auto_global : function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; - + zend_register_auto_global : + {$IFDEF PHP700} + function(name:Pzend_string; jit:zend_bool; auto_global_callback:Pointer):longint; cdecl; + {$ELSE} + {$IFDEF PHP5} + function(name: zend_pchar; name_len: uint; jit:boolean; callback: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; + zend_activate_auto_globals: procedure(TSRMLS_C: Pointer); cdecl; + {$ELSE} + function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; + {$ENDIF} + {$ENDIF} procedure REGISTER_MAIN_LONG_CONSTANT(name: zend_pchar; lval: longint; flags: integer; TSRMLS_DC: Pointer); procedure REGISTER_MAIN_DOUBLE_CONSTANT(name: zend_pchar; dval: double; flags: integer; TSRMLS_DC: Pointer); procedure REGISTER_MAIN_STRING_CONSTANT(name: zend_pchar; str: zend_pchar; flags: integer; TSRMLS_DC: Pointer); @@ -551,17 +560,32 @@ procedure convert_to_string(op: pzval); {$ELSE} zend_indent : procedure; cdecl; {$ENDIF} - ZendGetParameters : function: integer; cdecl; - zend_get_params_ex : function(param_count : Integer; Args : {$IFNDEF PHP700} ppzval {$ELSE} pzval{$ENDIF}) :integer; cdecl varargs; + ZendGetParameters : + {$IFDEF PHP7} + function(ht:longint; param_count:longint):longint; cdecl varargs; + {$ELSE} + function: integer; cdecl; + {$ENDIF} + zend_get_params_ex : + {$IFDEF PHP7} + function(param_count:longint):longint; cdecl varargs; + {$ELSE} + function(param_count : Integer; Args : ppzval) :integer; cdecl varargs; + {$ENDIF} + {$IFDEF PHP7} + ZvalGetArgs: function(Count: Integer; Args: ppzval): Integer;cdecl varargs; + _zend_get_parameters_array_ex:function(param_count:longint; argument_array:Pzval):longint; cdecl; + {$ELSE} + _zend_get_parameters_array_ex : function(param_count: integer; argument_array: + pppzval; TSRMLS_CC: pointer): integer; cdecl; + {$ENDIF} function zend_get_parameters_ex(number: integer; var Params: pzval_array): integer; function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; - +{$IFNDEF PHP7} function zend_get_parameters(ht: integer; param_count: integer; Params: array of ppzval): integer; +{$ENDIF} -var - _zend_get_parameters_array_ex : function(param_count: integer; argument_array: - pppzval; TSRMLS_CC: pointer): integer; cdecl; procedure dispose_pzval_array(Params: pzval_array); @@ -869,10 +893,10 @@ function Z_STRVAL(z : Pzval) : zend_ustr; function Z_STRUVAL(z : PZval): UTF8String; function Z_STRWVAL(z : pzval) : String; function Z_STRLEN(z : Pzval) : longint; -function Z_ARRVAL(z : Pzval ) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; -function Z_OBJ_HANDLE(z :Pzval) : zend_object_handle; -function Z_OBJ_HT(z : Pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; -function Z_OBJPROP(z : Pzval) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; +function Z_ARRVAL(z : Pzval ) : PHashTable; +function Z_OBJ_HANDLE(z :Pzval) : {$IFDEF PHP7} P_zend_object_handlers {$ELSE} zend_object_handle{$ENDIF}; +function Z_OBJ_HT(z : Pzval) : {$IFDEF PHP7}P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; +function Z_OBJPROP(z : Pzval) : PHashTable; function Z_VARREC(z: pzval): TVarRec; procedure zend_addref_p(z: pzval); cdecl; @@ -1306,7 +1330,7 @@ function ZValArrayKeyDel(v: pzval; key: zend_ustr): Boolean; overload; {$IFDEF PHP7} begin pzs^.len := strlen(zend_pchar(key)); - pzs^.val := zend_pchar(key); + pzs^.val := estrdup(zend_pchar(key)); Result := zend_hash_del_key_or_index(v.value.arr, pzs) = SUCCESS end; {$ELSE} @@ -1326,7 +1350,7 @@ function ZValArrayKeyDel(v: pzval; idx: Integer): Boolean; overload; {$IFDEF PHP7} begin pzs^.len := strlen(zend_pchar(inttostr(idx))); - pzs^.val := zend_pchar(inttostr(idx)); + pzs^.val := estrdup(zend_pchar(inttostr(idx))); Result := zend_hash_del_key_or_index(v.value.arr, pzs) = SUCCESS end; {$ELSE} @@ -2458,6 +2482,9 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; zend_register_constant := GetProcAddress(PHPLib, 'zend_register_constant'); zend_register_auto_global := GetProcAddress(PHPLib, 'zend_register_auto_global'); + {$IFDEF PHP5} + zend_activate_auto_globals := GetProcAddress(PHPLib, 'zend_activate_auto_globals'); + {$ENDIF} // -- tsrm_shutdown tsrm_shutdown := GetProcAddress(PHPLib, 'tsrm_shutdown'); @@ -2725,6 +2752,8 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$IFDEF PHP7} // -- zend_parse_parameters_throw zend_parse_parameters_throw := GetProcAddress(PHPLib, 'zend_parse_parameters_throw'); + ZvalGetArgs := GetProcAddress(PHPLib, 'zend_get_parameters_ex'); + _zend_get_parameters_array_ex := GetProcAddress(PHPLib, '_zend_get_parameters_array_ex'); {$ELSE} // -- zend_indent zend_indent := GetProcAddress(PHPLib, 'zend_indent'); @@ -3026,34 +3055,64 @@ function zend_get_parameters_ex(number: integer; var Params: pzval_array): integ var i : integer; begin - SetLength(Params, number); + if number = 0 then begin Result := SUCCESS; Exit; end; + {$IFDEF PHP7} + Params.value.arr.nNumOfElements := number; + for i := 0 to number - 1 do + zend_hash_index_add_empty_element(Params.value.arr, i); + Result := ZvalGetArgs(number, @Params); + {$ELSE} + SetLength(Params, number); for i := 0 to number - 1 do New(Params[i]); - Result := zend_get_parameters(number, number, Params); + {$ENDIF} end; function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; var i : integer; - p: pppzval; + + p: + {$IFDEF PHP7} + pzval + {$ELSE} + pppzval + {$ENDIF}; begin - SetLength(Params, number); if number = 0 then begin Result := SUCCESS; Exit; end; + {$IFDEF PHP7} + Params.value.arr.nNumOfElements := number; + for i := 0 to number - 1 do + zend_hash_index_add_empty_element(Params.value.arr, i); + + p := emalloc(number * sizeOf(zval)); + Result := _zend_get_parameters_array_ex(number, p); + + for i := 0 to number - 1 do + begin + _zend_hash_update_ind(Params.value.arr, i, p, '', 0); + if i <> number then + inc(integer(p), sizeof(zval)); + end; + + efree(p); + _zend_get_parameters_array_ex(number, p); + {$ELSE} + SetLength(Params, number); for i := 0 to number - 1 do New(Params[i]); - {$IFNDEF PHP700} + p := emalloc(number * sizeOf(ppzval)); - {$ENDIF} Result := _zend_get_parameters_array_ex(number, p, TSRMLS_DC); for i := 0 to number - 1 do @@ -3064,8 +3123,9 @@ function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS end; efree(p); + {$ENDIF} end; - +{$IFNDEF PHP7} function zend_get_parameters(ht: integer; param_count: integer; Params: array of ppzval): integer; assembler; register; asm push esi @@ -3092,15 +3152,20 @@ function zend_get_parameters(ht: integer; param_count: integer; Params: array of loop @toploop2 pop esi end; - +{$ENDIF} procedure dispose_pzval_array(Params: pzval_array); var i : integer; begin + {$IFDEF PHP7} + if Params.value.arr.nNumOfElements>0 then + for i := 0 to Params.value.arr.nNumOfElements-1 do + Freemem(zend_hash_index_findZval(Params,i)); + {$ELSE} if Length(Params)>0 then - for i := 0 to High(Params) do FreeMem(Params[i]); + {$ENDIF} Params := nil; end; @@ -3302,6 +3367,8 @@ procedure CheckZendErrors; if @zend_html_puts = nil then raise EPHP4DelphiException.Create('zend_html_puts'); {$IFDEF PHP7} if @zend_parse_parameters_throw = nil then EPHP4DelphiException.Create('zend_parse_parameters_throw'); + if @ZvalGetArgs = nil then EPHP4DelphiException.Create('ZvalGetArgs'); + if @_zend_get_parameters_array_ex = nil then EPHP4DelphiException.Create('_zend_get_parameters_array_ex'); {$ELSE} if @zend_indent = nil then raise EPHP4DelphiException.Create('zend_indent'); {$ENDIF} @@ -3418,7 +3485,7 @@ function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entr break; {$IFDEF PHP7} pzs^.len := strlen(ptr.fname); - pzs^.val := ptr.fname; + pzs^.val := estrdup(ptr.fname); zend_hash_del_key_or_index(function_table, pzs); {$ELSE} zend_hash_del_key_or_index(function_table, ptr.fname, strlen(ptr.fname) +1, 0, HASH_DEL_KEY); @@ -3614,7 +3681,7 @@ function Z_BVAL(z : pzval) : boolean; end; if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_BOOL then - Result := zend_bool(z.value.lval) + Result := boolean(zend_bool(z.value.lval)) else case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of IS_DOUBLE: if Trunc(z.value.dval) = 0 then Result := false else Result := true; @@ -3766,9 +3833,9 @@ function Z_ARRVAL(z : pzval ) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF Result := {$IFDEF PHP7} z.value.arr {$ELSE}z.value.ht{$ENDIF}; end; -function Z_OBJ_HANDLE(z :pzval) : zend_object_handle; +function Z_OBJ_HANDLE(z :pzval) : {$IFDEF PHP7} P_zend_object_handlers {$ELSE} zend_object_handle{$ENDIF}; begin - Result := z.value.obj.handle; + Result := {$IFDEF PHP7}z.value.obj.handlers{$ELSE}z.value.obj.handle{$ENDIF}; end; function Z_OBJ_HT(z : pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; @@ -3824,7 +3891,7 @@ function zend_hash_add_or_update(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{ begin {$IFDEF PHP7} pz^.len := strlen(arKey); - pz^.val := arKey; + pz^.val := estrdup(arKey); if Assigned(_zend_hash_add_or_update) then Result := _zend_hash_add_or_update(ht, pz, pData, flag, '', 0).u2.fe_iter_idx {$ELSE} diff --git a/Source/hzend_types.pas b/Source/hzend_types.pas index b24c349..e079681 100644 --- a/Source/hzend_types.pas +++ b/Source/hzend_types.pas @@ -132,7 +132,28 @@ interface SAPI_DEFAULT_CHARSET = PHP_DEFAULT_CHARSET; SAPI_PHP_VERSION_HEADER = 'X-Powered-By: PHP/" PHP_VERSION'; - + //zend_constants.h +const + CONST_CS = (1 shl 0) { Case Sensitive } + ; + CONST_PERSISTENT = (1 shl 1) { Persistent } + ; +const + ZEND_INTERNAL_FUNCTION = 1; + ZEND_USER_FUNCTION = 2; + ZEND_OVERLOADED_FUNCTION = 3; + ZEND_EVAL_CODE = 4; + ZEND_INTERNAL_CLASS = 1; + ZEND_USER_CLASS = 2; + ZEND_EVAL = (1 shl 0); + ZEND_INCLUDE = (1 shl 1); + ZEND_INCLUDE_ONCE = (1 shl 2); + ZEND_REQUIRE = (1 shl 3); + ZEND_REQUIRE_ONCE = (1 shl 4); + ZEND_ISSET = (1 shl 0); + ZEND_ISEMPTY = (1 shl 1); + ZEND_CT = (1 shl 0); + ZEND_RT = (1 shl 1); type pppointer = ^ppointer; @@ -378,7 +399,7 @@ interface PBucket = ^Bucket; Pzend_refcounted_h = ^zend_refcounted_h; Pzend_auto_global = ^zend_auto_global; - Pzend_internal_function = ^zend_internal_function; + Pzend_internal_function = ^tzend_internal_function; P_zend_internal_function = ^_zend_internal_function; P_zend_call_kind = ^_zend_call_kind; P_zend_auto_global = ^_zend_auto_global; @@ -592,8 +613,40 @@ _zend_fcall_info_cache = record end; end; zval = _zval_struct; - - + PZendConstant = ^TZendConstant; + zend_constant = record + value: zval; + flags: Integer; + name: zend_pchar; + name_len: uint; + module_number: Integer; + end; + TZendConstant = zend_constant; + Pzend_syntax_highlighter_ini = ^Tzend_syntax_highlighter_ini; + zend_syntax_highlighter_ini = + record + highlight_html : zend_pchar; + highlight_comment : zend_pchar; + highlight_default : zend_pchar; + highlight_string : zend_pchar; + highlight_keyword : zend_pchar; + end; + PStat = ^TStat; + TStat = record + st_dev: Word; + st_ino: Word; + st_mode: Word; + st_nlink: SmallInt; + st_uid: SmallInt; + st_gid: SmallInt; + st_rdev: Word; + st_size: Longint; + st_atime: Longint; + st_mtime: Longint; + st_ctime: Longint; + end; + Stat = TStat; + Tzend_syntax_highlighter_ini = zend_syntax_highlighter_ini; compare_func_t = function (_para1:pointer; _para2:pointer):longint;cdecl; swap_func_t = procedure (_para1:pointer; _para2:pointer);cdecl; @@ -706,7 +759,7 @@ _zend_array = record end; HashTable = _zend_array ; zend_array = _zend_array; - + pzval_array = pzval; _zend_ast = record kind : zend_ast_kind; attr : zend_ast_attr; @@ -949,6 +1002,7 @@ _zend_stream = record end; zend_stream = _zend_stream; + PZendFileHandle = ^_zend_file_handle; _zend_file_handle = record handle : record case longint of @@ -991,7 +1045,7 @@ _zend_utility_values = record zend_utility_values = _zend_utility_values; zend_write_func_t = function (str:zend_pchar; str_length:size_t):longint;cdecl; - + zend_write_t = zend_write_func_t; zend_error_handling_t = (EH_NORMAL = 0,EH_SUPPRESS,EH_THROW); @@ -1216,7 +1270,7 @@ _zend_internal_function = record module : P_zend_module_entry; reserved : array[0..3] of pointer; end; - zend_internal_function = _zend_internal_function; + tzend_internal_function = _zend_internal_function; @@ -1236,7 +1290,7 @@ _zend_function = record arg_info : Pzend_arg_info; end ); 2 : ( op_array : zend_op_array ); - 3 : ( internal_function : zend_internal_function ); + 3 : ( internal_function : tzend_internal_function ); end; zend_function = _zend_function; @@ -1884,6 +1938,7 @@ _zend_arena = record prev : P_zend_arena; end; zend_arena = _zend_arena; + Pzend_compiler_globals = ^_zend_compiler_globals; _zend_compiler_globals = record loop_var_stack : zend_stack; active_class_entry : P_zend_class_entry; @@ -1933,7 +1988,7 @@ _zend_objects_store = record end; zend_objects_store = _zend_objects_store; - + Pzend_executor_globals = ^_zend_executor_globals; _zend_executor_globals = record uninitialized_zval : zval; error_zval : zval; @@ -2826,7 +2881,7 @@ Tsmart_str = record zend_hash_extend:procedure(ht:PHashTable; nSize:uint32_t; _packed:zend_bool); cdecl; _zend_hash_add_or_update:function(ht:PHashTable; key:Pzend_string; pData:Pzval; flag:uint32_t; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; _zend_hash_update:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; -_zend_hash_update_ind:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; +_zend_hash_update_ind:function(ht:PHashTable; key:Cardinal; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; _zend_hash_add:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; _zend_hash_add_new:function(ht:PHashTable; key:Pzend_string; pData:Pzval; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; _zend_hash_str_add_or_update:function(ht:PHashTable; key:Pchar; len:size_t; pData:Pzval; flag:uint32_t; __zend_filename:Pchar; __zend_lineno:uint):Pzval; cdecl; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 7df32d9..248b55f 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -38,8 +38,7 @@ interface uses Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, PHPCommon, WinApi.WinSock, - {$IFDEF PHP7} hzend_types, {$ENDIF} - ZendTypes, PHPTypes, PHPAPI, ZENDAPI, + {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} PHPTypes, PHPAPI, ZENDAPI, DelphiFunctions, phpFunctions, strUtils, varUtils, {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} {$IFDEF soulengine_build} VCL.Dialogs, {$ENDIF} From 4c7cc09c82c7dd27d0ef3f9affa9814182daef43 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Fri, 26 Jul 2019 19:37:25 +0300 Subject: [PATCH 09/35] Update ZENDAPI.pas --- Source/ZENDAPI.pas | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 3e61ec3..7b6f3b6 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -251,8 +251,9 @@ function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; a zend_hash_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint; pData: Pointer): Integer; cdecl; - zend_hash_quick_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; - nKeyLength: uint; h: ulong; pData: Pointer): Integer; cdecl; + zend_hash_quick_find : + function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; arKey: zend_pchar; + nKeyLength: uint; h: ulong; out pData: ppzval): Integer; cdecl; zend_hash_index_find : function(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; h: ulong; pData: Pointer): Integer; cdecl; @@ -570,7 +571,7 @@ procedure convert_to_string(op: pzval); {$IFDEF PHP7} function(param_count:longint):longint; cdecl varargs; {$ELSE} - function(param_count : Integer; Args : ppzval) :integer; cdecl varargs; + function(param_count : Integer; Args : ppzval): integer; cdecl varargs; {$ENDIF} {$IFDEF PHP7} ZvalGetArgs: function(Count: Integer; Args: ppzval): Integer;cdecl varargs; @@ -1152,7 +1153,7 @@ procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); {$ELSE} z^._type {$ENDIF} := _type; - z.value.lval := v; + z^.value.lval := v; End; procedure ZvalVAL(z:pzval); @@ -2946,7 +2947,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; ZendGetParameters := GetProcAddress(PHPLib, 'zend_get_parameters'); // - zend_get_parameters_ex (native call) - zend_get_params_ex := GetProcAddress(PHPLib, 'zend_get_params_ex'); + zend_get_params_ex := GetProcAddress(PHPLib, 'zend_get_parameters_ex'); {$IFDEF PHP5} zend_destroy_file_handle := GetProcAddress(PHPLib, 'zend_destroy_file_handle'); {$ENDIF} From 618d3b60fdf817552c196b721269f29dc513538e Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sat, 27 Jul 2019 02:25:45 +0300 Subject: [PATCH 10/35] Added custom embedded extensions support --- Source/PHPAPI.pas | 8 ++++---- Source/ZENDAPI.pas | 33 ++++++++++++++++++++++++++++++++- Source/ZendTypes.pas | 1 + Source/php4delphi.pas | 41 +++++++++++++++++++++++++++++++++++++---- 4 files changed, 74 insertions(+), 9 deletions(-) diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 7d3a22e..f53ccc7 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -218,8 +218,8 @@ procedure variant2zval(value : variant; var z : pzval); php_raw_url_encode: function (s : zend_pchar; len : Integer; new_length : PInteger) : zend_pchar; cdecl; -{$IFDEF PHP510} -php_register_extensions: function (ptr : pointer; count: integer; TSRMLS_DC: pointer) : integer; cdecl; +{$IFDEF PHP5} +php_register_extensions: function (ptr : PPzend_module_entry; count: integer; TSRMLS_DC: pointer) : integer; cdecl; {$ELSE} php_startup_extensions: function (ptr: pointer; count : integer) : integer; cdecl; {$ENDIF} @@ -802,7 +802,7 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; php_raw_url_encode := GetProcAddress(PHPLib, 'php_raw_url_encode'); - {$IFDEF PHP510} + {$IFDEF PHP5} php_register_extensions := GetProcAddress(PHPLib, 'php_register_extensions'); {$ELSE} php_startup_extensions := GetProcAddress(PHPLib, 'php_startup_extensions'); @@ -866,7 +866,7 @@ procedure CheckPHPErrors; if @php_url_encode = nil then raise EPHP4DelphiException.Create('php_url_encode'); if @php_raw_url_encode = nil then raise EPHP4DelphiException.Create('php_raw_url_encode'); - {$IFDEF PHP510} + {$IFDEF PHP5} if @php_register_extensions = nil then raise EPHP4DelphiException.Create('php_register_extensions'); {$ELSE} if @php_startup_extensions = nil then raise EPHP4DelphiException.Create('php_startup_extensions'); diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 7b6f3b6..e7c4b51 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -729,6 +729,12 @@ procedure ZEND_PUTS(str: zend_pchar); var zend_register_internal_class : function(class_entry: pzend_class_entry; TSRMLS_DC: pointer): Pzend_class_entry; cdecl; zend_register_internal_class_ex : function(class_entry: pzend_class_entry; parent_ce: pzend_class_entry; parent_name: zend_pchar; TSRMLS_DC: pointer): Pzend_class_entry; cdecl; + zend_startup_module : function(module_entry: Pzend_module_entry):integer; cdecl; + zend_startup_module_ex : function(module_entry: Pzend_module_entry; TSRMLS_DC: pointer):integer; cdecl; + zend_register_module_ex : function(module_entry: Pzend_module_entry; TSRMLS_DC: pointer): Pzend_module_entry;cdecl; + zend_register_internal_module : function(module_entry: Pzend_module_entry; TSRMLS_DC: pointer): Pzend_module_entry;cdecl; + zend_startup_modules : function(TSRMLS_DC:pointer):integer; + zend_collect_module_handlers : function(TSRMLS_DC:pointer):integer; function ZvalInt(z:zval):Integer; function ZvalDouble(z:zval):Double; function ZvalBool(z:zval):Boolean; @@ -2922,12 +2928,30 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- _object_and_properties_init _object_and_properties_init := GetProcAddress(PHPLib, '_object_and_properties_init'); - // -- zend_register_internal_class + // -- zend_register_internal_class zend_register_internal_class := GetProcAddress(PHPLib, 'zend_register_internal_class'); // -- zend_register_internal_class_ex zend_register_internal_class_ex := GetProcAddress(PHPLib, 'zend_register_internal_class_ex'); + // -- zend_startup_module + zend_startup_module := GetProcAddress(PHPLib, 'zend_startup_module'); + + // -- zend_startup_module_ex + zend_startup_module_ex := GetProcAddress(PHPLib, 'zend_startup_module_ex'); + + // -- zend_register_module_ex + zend_register_module_ex := GetProcAddress(PHPLib, 'zend_register_module_ex'); + + // -- zend_register_internal_module + zend_register_internal_module := GetProcAddress(PHPLib, 'zend_register_internal_module'); + + // -- zend_startup_modules + zend_startup_modules := GetProcAddress(PHPLib, 'zend_startup_modules'); + + // -- zend_collect_module_handlers + zend_collect_module_handlers := GetProcAddress(PHPLib, 'zend_collect_module_handlers'); + // -- get_zend_version get_zend_version := GetProcAddress(PHPLib, 'get_zend_version'); @@ -3431,6 +3455,13 @@ procedure CheckZendErrors; if @_object_and_properties_init = nil then raise EPHP4DelphiException.Create('_object_and_properties_init'); if @zend_register_internal_class = nil then raise EPHP4DelphiException.Create('zend_register_internal_class'); if @zend_register_internal_class_ex = nil then raise EPHP4DelphiException.Create('zend_register_internal_class_ex'); + if @zend_startup_module = nil then raise EPHP4DelphiException.Create('zend_startup_module'); + if @zend_startup_module_ex = nil then raise EPHP4DelphiException.Create('zend_startup_module_ex'); + if @zend_register_module_ex = nil then raise EPHP4DelphiException.Create('zend_register_module_ex'); + if @zend_register_internal_module = nil then raise EPHP4DelphiException.Create('zend_register_internal_module'); + if @zend_startup_modules = nil then raise EPHP4DelphiException.Create('zend_startup_modules'); + if @zend_collect_module_handlers = nil then raise EPHP4DelphiException.Create('zend_collect_module_handlers'); + if @get_zend_version = nil then raise EPHP4DelphiException.Create('get_zend_version'); if @zend_make_printable_zval = nil then raise EPHP4DelphiException.Create('zend_make_printable_zval'); if @zend_print_zval = nil then raise EPHP4DelphiException.Create('zend_print_zval'); diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 627b682..b48329a 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -1204,6 +1204,7 @@ _zend_function_entry = record end; {$ENDIF} Pzend_module_entry = ^Tzend_module_entry; + PPzend_module_entry = ^Pzend_module_entry; p_zend_module_entry = ^_zend_module_entry; _zend_module_entry = record size : word; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 248b55f..8979854 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -194,11 +194,12 @@ TCustomPHPLibrary = class(TPHPComponent) property Locked : boolean read FLocked write FLocked; end; { TPHPEngine } - + TPHPEngineInitEvent = procedure(Sender:TObject;TSRMLS_DC:Pointer) of object; TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) private FINIPath : AnsiString; FOnEngineStartup : TNotifyEvent; + FAddMods : TArray; FOnEngineShutdown : TNotifyEvent; FEngineActive : boolean; FHandleErrors : boolean; @@ -245,6 +246,7 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) constructor Create(AOwner : TComponent); override; destructor Destroy; override; procedure AddFunction(FN: zend_ustr; Func: Pointer); + procedure AddModule(Module_entry: Pzend_module_entry); procedure StartupEngine; virtual; procedure ShutdownEngine; virtual; procedure LockEngine; virtual; @@ -1285,7 +1287,6 @@ procedure TpsvCustomPHP.StartupRequest; FOnReadPost(Self, FPostStream); zend_alter_ini_entry('max_execution_time', 19, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME); - php_request_startup(TSRMLS_D); if Assigned(FOnRequestStartup) then FOnRequestStartup(Self); @@ -1340,7 +1341,6 @@ procedure TpsvCustomPHP.ShutdownRequest; end; - procedure TpsvCustomPHP.PrepareVariables; var ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; @@ -1904,6 +1904,7 @@ procedure TPHPEngine.RefreshLibrary; procedure TPHPEngine.StartupEngine; var i : integer; + x: Pzend_module_entry; begin if PHPEngine <> Self then begin @@ -1943,8 +1944,14 @@ procedure TPHPEngine.StartupEngine; php_module_startup(@delphi_sapi_module, @FLibraryModule, 1); - TSRMLS_D := ts_resource_ex(0, nil); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + zend_register_module_ex(x, TSRMLS_D); + zend_startup_module_ex(x, TSRMLS_D); + end; + PrepareIniEntry; RegisterConstants; @@ -2059,8 +2066,18 @@ procedure TPHPEngine.UnlockLibraries; end; procedure TPHPEngine.RemoveRequest; +var + x: Pzend_module_entry; + xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; begin InterlockedDecrement(FRequestCount); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + xp := x^.request_shutdown_func; + if(Assigned(xp)) then + xp(x^._type, x^.module_number, TSRMLS_D); + end; end; procedure TPHPEngine.AddFunction(FN: zend_ustr; Func: Pointer); @@ -2069,9 +2086,25 @@ procedure TPHPEngine.AddFunction(FN: zend_ustr; Func: Pointer); MyFuncs.AddObject(FN, TObject(Func)); end; +procedure TPHPEngine.AddModule(Module_entry: Pzend_module_entry); +begin + SetLength(FAddMods, Length(FAddMods)+1); + FAddMods[High(FAddMods)] := Module_entry; +end; + procedure TPHPEngine.AddRequest; +var + x: Pzend_module_entry; + xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; begin InterlockedIncrement(FRequestCount); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + xp := x^.request_startup_func; + if(Assigned(xp)) then + xp(x^._type, x^.module_number, TSRMLS_D); + end; end; initialization From b85018e7031c60864475a7f9fc5f40f7df5a0413 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sun, 4 Aug 2019 19:50:41 +0300 Subject: [PATCH 11/35] Update ZENDAPI.pas --- Source/ZENDAPI.pas | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index e7c4b51..9e2aeca 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -876,7 +876,7 @@ procedure CheckZendErrors; zend_ini_deactivate : function(TSRMLS_D : pointer) : integer; cdecl; function GetGlobalResource(resource_name: AnsiString) : pointer; - +function GetGlobalResourceDC(resource_name: AnsiString;TSRMLS_DC:pointer) : pointer; function GetCompilerGlobals : Pzend_compiler_globals; function GetExecutorGlobals : pzend_executor_globals; function GetAllocGlobals : pointer; @@ -1595,10 +1595,13 @@ function ZendToVariant(const Value: pppzval): Variant; overload; S: String; begin case {$IFDEF PHP7} Value^^^.u1.v._type {$ELSE}Value^^^._type{$ENDIF} of + 0: Result := Null; 1: Result := Value^^^.value.lval; 2: Result := Value^^^.value.dval; - 6: begin S := Value^^^.value.str.val; Result := S; end; - 4,5: Result := Null; + 3: Result := boolean(Value^^^.value.lval); + 8: begin S := Value^^^.value.str.val; Result := S; end; + 6: begin S := Value^^^.value.str.val; Result := S; end + else Result := Null; end; end; @@ -3631,6 +3634,31 @@ function GetGlobalResource(resource_name: AnsiString) : pointer; end; end; +function GetGlobalResourceDC(resource_name: AnsiString;TSRMLS_DC:pointer) : pointer; +var + global_id : pointer; + global_value : integer; + global_ptr : pointer; +begin + Result := nil; + try + global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); + if Assigned(global_id) then + begin + global_value := integer(global_id^); + asm + mov ecx, global_value + mov edx, dword ptr TSRMLS_DC + mov eax, dword ptr [edx] + mov ecx, dword ptr [eax+ecx*4-4] + mov global_ptr, ecx + end; + Result := global_ptr; + end; + except + Result := nil; + end; +end; function GetCompilerGlobals : Pzend_compiler_globals; begin From fcd7e70f83ae5fbc5c83f10817ca5a9f4683e6da Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Sun, 4 Aug 2019 23:53:01 +0300 Subject: [PATCH 12/35] zval routines --- Source/DelphiFunctions.pas | 4 +- Source/PHPAPI.pas | 77 ---------- Source/PHPFunctions.pas | 20 +-- Source/ZENDAPI.pas | 293 +++++++++++++++++++++++++------------ Source/php4delphi.pas | 6 +- 5 files changed, 217 insertions(+), 183 deletions(-) diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index e1fb504..78a0a2a 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -198,7 +198,7 @@ procedure delphi_date(ht : integer; return_value : pzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; {$ENDIF} begin - ZVAL_DOUBLE(return_value, Date); + ZVALVAL(return_value, Date); end; //proto string delphi_extract_file_dir(string source) @@ -658,7 +658,7 @@ procedure delphi_is_uc(ht : integer; return_value : pzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); {$ENDIF} begin - {$IFDEF PHP_UNICE}ZVAL_TRUE{$ELSE}ZVAL_FALSE{$ENDIF}(return_value); + ZVALVAL(return_value, {$IFDEF PHP_UNICE}TRUE{$ELSE}FALSE{$ENDIF}); end; {$IFDEF PHP510} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index f53ccc7..1f0cf58 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -199,11 +199,6 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; php_ini_double: function(name : zend_pchar; name_length : uint; orig : Integer) : Double; cdecl; php_ini_string: function(name : zend_pchar; name_length : uint; orig : Integer) : zend_pchar; cdecl; - -function zval2variant(value : zval) : variant; -procedure variant2zval(value : variant; var z : pzval); - - var php_url_free: procedure (theurl : pphp_url); cdecl; @@ -426,19 +421,6 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; end; end; -function zval2variant(value : zval) : variant; -begin - case {$IFDEF PHP7}Value.u1.v._type{$ELSE}Value._type{$ENDIF} of - IS_NULL : Result := NULL; - IS_LONG : Result := Value.value.lval; - IS_DOUBLE : Result := Value.value.dval; - IS_STRING : Result := zend_ustr(Value.Value.str.val); - IS_BOOL : Result := Boolean(Value.Value.lval); - else - Result := NULL; - end; -end; - function GetStringOf(const V: TVarData): string; begin case V.VType of @@ -485,65 +467,6 @@ function GetStringOf(const V: TVarData): string; end; end; - -procedure variant2zval(value : variant;var z : pzval); -var - W : WideString; - S: String; -begin - if VarIsEmpty(value) then - begin - ZVAL_NULL(z); - Exit; - end; - // MessageBoxA(0, zend_pchar(zend_ustr( TVarData(Value).VType.ToString)), '', 0 ) ; - case TVarData(Value).VType of - varString : //Peter Enz - begin - if Assigned ( TVarData(Value).VString ) then - begin - ZVAL_STRING(z, TVarData(Value).VString , true); - end - else - begin - ZVAL_STRING(z, '', true); - end; - end; - - varUString : //Peter Enz - begin - S := string(TVarData(Value).VUString); - - ZVAL_STRING(z, zend_pchar(zend_ustr(S)), true); - end; - - varOleStr : //Peter Enz - begin - if Assigned ( TVarData(Value).VOleStr ) then - begin - W := WideString(Pointer(TVarData(Value).VOleStr)); - ZVAL_STRINGW(z, PWideChar(W), true); - end - else - begin - ZVAL_STRING(z, '', true); - end; - end; - varSmallInt : ZVAL_LONG(z, Integer(TVarData(Value).VSmallint)); - varInteger : ZVAL_LONG(z, TVarData(Value).VInteger); - varBoolean : ZVAL_BOOL(z, TVarData(Value).VBoolean); - varSingle : ZVAL_DOUBLE(z, TVarData(Value).VSingle); - varDouble : ZVAL_DOUBLE(z, TVarData(Value).VDouble); - varError : ZVAL_LONG(z, Integer(TVarData(Value).VError)); - varByte : ZVAL_LONG(z, Integer(TVarData(Value).VByte)); - varDate : ZVAL_DOUBLE(z, TVarData(Value).VDate); - //varArray : ZVAL_ARRAY(z, Value); - else - ZVAL_NULL(Z); - end; -end; - - function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; var core_globals_value : integer; diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index a913537..48b47de 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -657,7 +657,7 @@ function TZendVariable.GetAsVariant: variant; Exit; end; - result := zval2variant(FValue^); + result := ZendToVariant(FValue); end; function TZendVariable.GetDataType: integer; @@ -709,7 +709,7 @@ procedure TZendVariable.SetAsBoolean(const Value: boolean); begin Exit; end; - ZVAL_BOOL(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsDate(const Value: TDateTime); @@ -718,7 +718,7 @@ procedure TZendVariable.SetAsDate(const Value: TDateTime); begin Exit; end; - ZVAL_DOUBLE(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsDateTime(const Value: TDateTime); @@ -727,7 +727,7 @@ procedure TZendVariable.SetAsDateTime(const Value: TDateTime); begin Exit; end; - ZVAL_DOUBLE(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsFloat(const Value: double); @@ -736,7 +736,7 @@ procedure TZendVariable.SetAsFloat(const Value: double); begin Exit; end; - ZVAL_DOUBLE(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsInteger(const Value: integer); @@ -745,7 +745,7 @@ procedure TZendVariable.SetAsInteger(const Value: integer); begin Exit; end; - ZVAL_LONG(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsString(const Value: zend_ustr); @@ -754,7 +754,7 @@ procedure TZendVariable.SetAsString(const Value: zend_ustr); begin Exit; end; - ZVAL_STRINGL(FValue, zend_pchar(Value), Length(Value), true); + ZVALVAL(FValue, zend_pchar(Value), Length(Value)); end; procedure TZendVariable.SetAsTime(const Value: TDateTime); @@ -763,7 +763,7 @@ procedure TZendVariable.SetAsTime(const Value: TDateTime); begin Exit; end; - ZVAL_DOUBLE(FValue, Value); + ZVALVAL(FValue, Value); end; procedure TZendVariable.SetAsVariant(const Value: variant); @@ -772,7 +772,7 @@ procedure TZendVariable.SetAsVariant(const Value: variant); begin Exit; end; - variant2zval(Value, FValue); + VariantToZend(Value, FValue); end; @@ -782,7 +782,7 @@ procedure TZendVariable.UnAssign; begin Exit; end; - ZVAL_NULL(FValue); + ZVALVAL(FValue); end; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 9e2aeca..634f004 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -747,6 +747,8 @@ procedure ZEND_PUTS(str: zend_pchar); procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG) overload; procedure ZvalVAL(z:pzval) overload; procedure ZvalVAL(z:pzval; v:Double) overload; + procedure ZvalVAL(z:pzval; v:SmallInt) overload; + procedure ZvalVAL(z:pzval; v:Extended) overload; procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); overload; procedure ZvalString(z:pzval) overload; procedure ZvalString(z:pzval; s:zend_pchar; len:Integer = 0) overload; @@ -776,13 +778,7 @@ function ZValArrayKeyFind(v: pzval; idx: Integer; out pData: ppzval) function GetArgPZval(Args: TVarRec; const _type: Integer = IS_LONG; Make: Boolean = false): pzval; procedure ZVAL_RESOURCE(value: pzval; l: longint); -procedure ZVAL_BOOL(z: pzval; b: boolean); -procedure ZVAL_NULL(z: pzval); -procedure ZVAL_LONG(z: pzval; l: longint); -procedure ZVAL_DOUBLE(z: pzval; d: double); procedure ZVAL_EMPTY_STRING(z: pzval); -procedure ZVAL_TRUE(z: pzval); -procedure ZVAL_FALSE(z: pzval); function add_next_index_variant(arg: pzval; value: variant): integer; procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; @@ -803,10 +799,13 @@ procedure ArrayToHash(Keys,AR: Array of Variant; var HT: pzval); overload; function ToStrA(V: Variant): zend_ustr; function ToStr(V: Variant): String; function toWChar(s: zend_pchar): PWideChar; +function ZendToVariant(const Value: pzval): Variant; {$IFNDEF PHP7} -function ZendToVariant(const Value: pppzval): Variant; overload; +overload; function ZendToVariant(const Value: ppzval): Variant; overload; +function ZendToVariant(const Value: pppzval): Variant; overload; {$ENDIF} +procedure VariantToZend(const Value: Variant; z: pzval); procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); @@ -1022,16 +1021,6 @@ procedure ZVAL_RESOURCE(value: pzval; l: longint); value^.value.lval := l; end; -procedure ZVAL_BOOL(z: pzval; b: boolean); -begin - {$IFDEF PHP7} - z^.u1.v._type - {$ELSE} - z^._type - {$ENDIF} := IS_BOOL; - z^.value.lval := integer(b); -end; - procedure ZVAL_NULL(z: pzval); begin {$IFDEF PHP7} @@ -1041,25 +1030,6 @@ procedure ZVAL_NULL(z: pzval); {$ENDIF} := IS_NULL; end; -procedure ZVAL_LONG(z: pzval; l: longint); -begin - {$IFDEF PHP7} - z^.u1.v._type - {$ELSE} - z^._type - {$ENDIF} := IS_LONG; - z^.value.lval := l; -end; - -procedure ZVAL_DOUBLE(z: pzval; d: double); -begin - {$IFDEF PHP7} - z^.u1.v._type - {$ELSE} - z^._type - {$ENDIF} := IS_DOUBLE; - z^.value.dval := d; -end; procedure ZvalString(z:pzval); begin z^.value.str.len := 0; @@ -1180,6 +1150,27 @@ procedure ZvalVAL(z:pzval; v:Double); {$ENDIF} := IS_LONG; z.value.dval := v; End; + +procedure ZvalVAL(z:pzval; v:SmallInt); +begin + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_LONG; + z^.value.lval := v; +end; + +procedure ZvalVAL(z:pzval; v:Extended); +Begin + {$IFDEF PHP7} + z^.u1.v._type + {$ELSE} + z^._type + {$ENDIF} := IS_LONG; + z.value.dval := v; +End; + procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); var lens: Integer; @@ -1554,17 +1545,6 @@ procedure ZVAL_EMPTY_STRING(z: pzval); {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; -procedure ZVAL_TRUE(z: pzval); -begin - {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_BOOL; - z^.value.lval := 1; -end; - -procedure ZVAL_FALSE(z: pzval); -begin - {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_BOOL; - z^.value.lval := 0; -end; function ToStrA(V: Variant): zend_ustr; begin Result := V; @@ -1589,33 +1569,164 @@ function toWChar(s: zend_pchar): PWideChar; ss := ss2; Result := PWideChar(ss); end; +function HashToVarArray(const Value:{$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}): Variant; + Var + Len,I: Integer; + tmp : pppzval; +begin + len := zend_hash_num_elements(Value); + Result := VarArrayCreate([0, len - 1], varVariant); + for i:=0 to len-1 do + begin + new(tmp); -function ZendToVariant(const Value: pppzval): Variant; overload; + zend_hash_index_find(Value,i,tmp); + + VarArrayPut(Result, ZendToVariant(tmp), [i]); + freemem(tmp); + end; +end; +procedure VarArrayToHash(var HT: pzval;Value: Variant); + Var + I,Len: Integer; + z: pzval; +begin + _array_init(ht,nil,1); + len := TVarData(Value).VArray^.Bounds[0].ElementCount; + for i:= 0 to len - 1 do + begin + z := MAKE_STD_ZVAL; + VariantToZend(VarArrayGet(Value, [i]),z); + add_index_zval(HT, i, z); + end; +end; + +function ZendToVariant(const Value: pzval): Variant; overload; Var S: String; begin - case {$IFDEF PHP7} Value^^^.u1.v._type {$ELSE}Value^^^._type{$ENDIF} of + case {$IFDEF PHP7} Value^.u1.v._type {$ELSE}Value^._type{$ENDIF} of 0: Result := Null; - 1: Result := Value^^^.value.lval; - 2: Result := Value^^^.value.dval; - 3: Result := boolean(Value^^^.value.lval); - 8: begin S := Value^^^.value.str.val; Result := S; end; - 6: begin S := Value^^^.value.str.val; Result := S; end + 1: Result := Value^.value.lval; + 2: Result := Value^.value.dval; + 3: Result := boolean(Value^.value.lval); + 4: Result := HashToVarArray(Value^.value.ht); + //5: Result := object //HERE; + 7: Result := Value^.value.lval; + 6: begin S := Value^.value.str.val; Result := S; end; + 8: begin S := Value^.value.str.val; Result := S; end; + 9: Result := HashToVarArray(Value^.value.ht) else Result := Null; end; end; +procedure VariantToZend(const Value:Variant;z:pzval); +var + W : WideString; + S: String; +begin + if VarIsEmpty(value) then + begin + ZVALVAL(z); + Exit; + end; + case TVarData(Value).VType of + varString : //Peter Enz + begin + if Assigned ( TVarData(Value).VString ) then + begin + ZVAL_STRING(z, TVarData(Value).VString , true); + end + else + begin + ZVAL_STRING(z, '', true); + end; + end; + + varUString : //Peter Enz + begin + S := string(TVarData(Value).VUString); + + ZVAL_STRING(z, zend_pchar(zend_ustr(S)), true); + end; + + varOleStr : //Peter Enz + begin + if Assigned ( TVarData(Value).VOleStr ) then + begin + W := WideString(Pointer(TVarData(Value).VOleStr)); + ZVAL_STRINGW(z, PWideChar(W), true); + end + else + begin + ZVAL_STRING(z, '', true); + end; + end; + + varWord : ZVALVAL(z, TVarData(Value).VWord); + //HERE; + // varVariant : + // varUnknown : + //<=== ������� ������ ����� VarIs{TYPE}() + + //varDispatch : integer(TVarData(Value).VDispatch + //<==��������� �� ���������� �������... �� ����� �� ����� + //������� �� ����� � ����� Dispatch (�����, ������)... ����� � + //�� ����� � ������ ����.�� + //varAny : integer(TVarData(Value).VAny + //<==��������� �� �����*(�����) + // + + //varRecord : integer(TVarData(Value).VRecord) + //<==������... � �� ��� ��� �� ���������� ��� � ���� ����� RTTI �������� + //varObject : integer(TVarData(Value).VObject) + //<==������... + varStrArg : //Peter Enz + begin + if Assigned ( TVarData(Value).VString ) then + begin + ZVAL_STRING(z, TVarData(Value).VString , true); + end + else + begin + ZVAL_STRING(z, '', true); + end; + end; + + varUStrArg : //Peter Enz + begin + S := string(TVarData(Value).VUString); + + ZVAL_STRING(z, zend_pchar(zend_ustr(S)), true); + end; + varInt64 : ZVALVAL(z, TVarData(Value).VInt64); + varUInt64 : ZVALVAL(z, TVarData(Value).VUInt64); + varShortInt : ZVALVAL(z, Integer(TVarData(Value).VShortInt)); + varSmallInt : ZVALVAL(z, Integer(TVarData(Value).VSmallint)); + varInteger : ZVALVAL(z, TVarData(Value).VInteger); + varBoolean : ZVALVAL(z, TVarData(Value).VBoolean); + varSingle : ZVALVAL(z, TVarData(Value).VSingle); + varDouble : ZVALVAL(z, TVarData(Value).VDouble); + varCurrency : ZVALVAL(z, TVarData(Value).VCurrency); + //!> + varError : ZVALVAL(z, Integer(TVarData(Value).VError)); + + varByte : ZVALVAL(z, Integer(TVarData(Value).VByte)); + varDate : ZVALVAL(z, TVarData(Value).VDate); + varArray : VarArrayToHash(z, Value); + else + ZVALVAL(Z); + end; +end; + function ZendToVariant(const Value: ppzval): Variant; overload; - Var - S: String; begin -Result := Null; - case {$IFDEF PHP7} Value^^.u1.v._type {$ELSE}Value^^._type{$ENDIF} of - 1: Result := Value^^.value.lval; - 2: Result := Value^^.value.dval; - 6: begin S := Value^^.value.str.val; Result := S; end; - 4,5: Result := Null; - end; +Result := ZendToVariant(Value^); +end; + +function ZendToVariant(const Value: pppzval): Variant; overload; +begin +Result := ZendToVariant(Value^^); end; procedure HashToArray(HT: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var AR: TArrayVariant); overload; @@ -1725,14 +1836,14 @@ function add_next_index_variant(arg: pzval; value: variant): integer; ZVAL_STRING(iz, '', true); end; end; - varSmallInt : ZVAL_LONG(iz, TVarData(Value).VSmallint); - varInteger : ZVAL_LONG(iz, TVarData(Value).VInteger); - varBoolean : ZVAL_BOOL(iz, TVarData(Value).VBoolean); - varSingle : ZVAL_DOUBLE(iz, TVarData(Value).VSingle); - varDouble : ZVAL_DOUBLE(iz, TVarData(Value).VDouble); - varError : ZVAL_LONG(iz, TVarData(Value).VError); - varByte : ZVAL_LONG(iz, TVarData(Value).VByte); - varDate : ZVAL_DOUBLE(iz, TVarData(Value).VDate); + varSmallInt : ZVALVAL(iz, TVarData(Value).VSmallint); + varInteger : ZVALVAL(iz, TVarData(Value).VInteger); + varBoolean : ZVALVAL(iz, TVarData(Value).VBoolean); + varSingle : ZVALVAL(iz, TVarData(Value).VSingle); + varDouble : ZVALVAL(iz, TVarData(Value).VDouble); + varError : ZVALVAL(iz, TVarData(Value).VError); + varByte : ZVALVAL(iz, TVarData(Value).VByte); + varDate : ZVALVAL(iz, TVarData(Value).VDate); else ZVAL_NULL(iz); end; @@ -1747,7 +1858,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1774,7 +1885,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1801,7 +1912,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of string); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1828,7 +1939,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of zend_ustr); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1855,7 +1966,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1881,7 +1992,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1909,13 +2020,13 @@ procedure ZVAL_ARRAY(z: pzval; arr: Variant); overload; begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; if arr.PVarArray.DimCount = 0 then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1977,7 +2088,7 @@ procedure ZVAL_ARRAYAC(z: pzval; keynames: Array of ansichar; keyvals: Array of begin if _array_init(z, nil, 0) = FAILURE then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -1998,7 +2109,7 @@ procedure ZVAL_ARRAYAC(z: pzval; keynames: Array of ansichar; keyvals: Array of end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); end; end; procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of PWideChar); @@ -2007,7 +2118,7 @@ procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of begin if _array_init(z, nil, 0) = FAILURE then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2031,7 +2142,7 @@ procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2042,7 +2153,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: TWSDate; keyvals: TWSDate); overloa begin if _array_init(z, nil, 0) = FAILURE then //������ ������ ������� ������ begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; //z^.refcount := Length(keynames); //������� ���������� ������������ �������� @@ -2071,7 +2182,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: TWSDate; keyvals: TWSDate); overloa end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2082,7 +2193,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of begin if _array_init(z, nil, 0) = FAILURE then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2107,7 +2218,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2118,7 +2229,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: TASDate; keyvals: TASDate); overload; begin if _array_init(z, nil, 0) = FAILURE then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2142,7 +2253,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: TASDate; keyvals: TASDate); overload; end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2153,7 +2264,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: Array of AnsiString; keyvals: Array o begin if _array_init(z, nil, 0) = FAILURE then begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; @@ -2177,7 +2288,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: Array of AnsiString; keyvals: Array o end else begin - ZVAL_FALSE(z); + ZVALVAL(z,False); Exit; end; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 8979854..4fe98e7 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -957,7 +957,7 @@ procedure DispatchRequest(ht : integer; return_value : pzval; this_ptr : pzval; {$IFNDEF PHP510} return_value_ptr := nil; {$ENDIF} - ZVAL_NULL(return_value); + ZVALVAL(return_value); gl := GetSAPIGlobals; if gl = nil then Exit; @@ -969,7 +969,7 @@ procedure DispatchRequest(ht : integer; return_value : pzval; this_ptr : pzval; if lib <> nil then Lib.HandleRequest(ht, return_value, return_value_ptr, this_ptr, return_value_used, TSRMLS_DC); except - ZVAL_NULL(return_value); + ZVALVAL(return_value); end; end; end; @@ -1570,7 +1570,7 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; FZendVar.AsZendVariable := return_value; AFunction.OnExecute(Self, FParameters, ReturnValue, FZendVar, TSRMLS_DC); if FZendVar.ISNull then {perform variant conversion} - variant2zval(ReturnValue, return_value); + VariantToZend(ReturnValue, return_value); finally FZendVar.Free; end; From e74fff97458ef94beed579cf8fed0acce63ed2d1 Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Mon, 5 Aug 2019 00:23:52 +0300 Subject: [PATCH 13/35] Update ZENDAPI.pas --- Source/ZENDAPI.pas | 57 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 634f004..397f38e 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -725,6 +725,9 @@ procedure dispose_pzval_array(Params: pzval_array); procedure ZEND_PUTS(str: zend_pchar); +type + TObjectAConvertMethod = procedure(v:variant;z:pzval); + TObjectBConvertMethod = function(a: pzval):Variant; var zend_register_internal_class : function(class_entry: pzend_class_entry; TSRMLS_DC: pointer): Pzend_class_entry; cdecl; @@ -799,13 +802,14 @@ procedure ArrayToHash(Keys,AR: Array of Variant; var HT: pzval); overload; function ToStrA(V: Variant): zend_ustr; function ToStr(V: Variant): String; function toWChar(s: zend_pchar): PWideChar; -function ZendToVariant(const Value: pzval): Variant; +function ZendToVariant(const Value: pzval;cobj: TObjectBConvertMethod=nil): Variant; {$IFNDEF PHP7} overload; -function ZendToVariant(const Value: ppzval): Variant; overload; -function ZendToVariant(const Value: pppzval): Variant; overload; +function ZendToVariant(const Value: ppzval;cobj: TObjectBConvertMethod=nil): Variant; overload; +function ZendToVariant(const Value: pppzval;cobj: TObjectBConvertMethod=nil): Variant; overload; {$ENDIF} -procedure VariantToZend(const Value: Variant; z: pzval); +procedure VariantToZend(const Value: Variant; z: pzval; +cobj: TObjectAConvertMethod=nil); procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); @@ -1601,7 +1605,8 @@ procedure VarArrayToHash(var HT: pzval;Value: Variant); end; end; -function ZendToVariant(const Value: pzval): Variant; overload; +function ZendToVariant(const Value: pzval; +cobj: TObjectBConvertMethod=nil): Variant; overload; Var S: String; begin @@ -1611,7 +1616,11 @@ function ZendToVariant(const Value: pzval): Variant; overload; 2: Result := Value^.value.dval; 3: Result := boolean(Value^.value.lval); 4: Result := HashToVarArray(Value^.value.ht); - //5: Result := object //HERE; + 5: + if Assigned(cobj) then + Result := cobj(Value) + else + Result := Null; 7: Result := Value^.value.lval; 6: begin S := Value^.value.str.val; Result := S; end; 8: begin S := Value^.value.str.val; Result := S; end; @@ -1620,7 +1629,8 @@ function ZendToVariant(const Value: pzval): Variant; overload; end; end; -procedure VariantToZend(const Value:Variant;z:pzval); +procedure VariantToZend(const Value:Variant;z:pzval; +cobj: TObjectAConvertMethod=nil); var W : WideString; S: String; @@ -1673,14 +1683,41 @@ procedure VariantToZend(const Value:Variant;z:pzval); //<==��������� �� ���������� �������... �� ����� �� ����� //������� �� ����� � ����� Dispatch (�����, ������)... ����� � //�� ����� � ������ ����.�� + varDispatch : + begin + if Assigned(cobj) then + cobj(Value, z) + else + ZVALVAL(z); + end; //varAny : integer(TVarData(Value).VAny //<==��������� �� �����*(�����) // - + varAny : + begin + if Assigned(cobj) then + cobj(Value, z) + else + ZVALVAL(z); + end; //varRecord : integer(TVarData(Value).VRecord) //<==������... � �� ��� ��� �� ���������� ��� � ���� ����� RTTI �������� + varRecord : + begin + if Assigned(cobj) then + cobj(Value, z) + else + ZVALVAL(z); + end; //varObject : integer(TVarData(Value).VObject) //<==������... + varObject : + begin + if Assigned(cobj) then + cobj(Value, z) + else + ZVALVAL(z, integer(TObject(TVarData(Value).VPointer^))); + end; varStrArg : //Peter Enz begin if Assigned ( TVarData(Value).VString ) then @@ -1719,12 +1756,12 @@ procedure VariantToZend(const Value:Variant;z:pzval); end; end; -function ZendToVariant(const Value: ppzval): Variant; overload; +function ZendToVariant(const Value: ppzval;cobj: TObjectBConvertMethod=nil): Variant; overload; begin Result := ZendToVariant(Value^); end; -function ZendToVariant(const Value: pppzval): Variant; overload; +function ZendToVariant(const Value: pppzval;cobj: TObjectBConvertMethod=nil): Variant; overload; begin Result := ZendToVariant(Value^^); end; From 0514dbb02ff15ace4268ee1e5d7f8829306f27cc Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Mon, 5 Aug 2019 10:42:13 +0300 Subject: [PATCH 14/35] Update ZENDAPI.pas --- Source/ZENDAPI.pas | 151 ++++++++++----------------------------------- 1 file changed, 34 insertions(+), 117 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 397f38e..15af527 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -782,7 +782,11 @@ function ZValArrayKeyFind(v: pzval; idx: Integer; out pData: ppzval) Make: Boolean = false): pzval; procedure ZVAL_RESOURCE(value: pzval; l: longint); procedure ZVAL_EMPTY_STRING(z: pzval); + function add_next_index_variant(arg: pzval; value: variant): integer; +function add_index_variant(arg: pzval; index:integer; value: variant): integer; +function add_assoc_variant(arg: pzval; key: zend_pchar; key_len: uint; value: variant): integer; + procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; procedure ZVAL_ARRAY(z: pzval; arr: array of string); overload; @@ -1593,18 +1597,14 @@ function HashToVarArray(const Value:{$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$E procedure VarArrayToHash(var HT: pzval;Value: Variant); Var I,Len: Integer; - z: pzval; begin _array_init(ht,nil,1); len := TVarData(Value).VArray^.Bounds[0].ElementCount; for i:= 0 to len - 1 do begin - z := MAKE_STD_ZVAL; - VariantToZend(VarArrayGet(Value, [i]),z); - add_index_zval(HT, i, z); + add_index_variant(HT, i, VarArrayGet(Value, [i])); end; end; - function ZendToVariant(const Value: pzval; cobj: TObjectBConvertMethod=nil): Variant; overload; Var @@ -1793,45 +1793,24 @@ procedure ArrayToHash(AR: Array of Variant; var HT: pzval); overload; len := Length(AR); for i:=0 to len-1 do begin - case VarType(AR[i]) of - varInteger, varSmallint, varLongWord, 17: add_index_long(ht,i,AR[i]); - varDouble,varSingle: add_index_double(ht,i,AR[i]); - varBoolean: add_index_bool(ht,i,AR[I]); - varEmpty: add_index_null(ht,i); - varString: add_index_string(ht,i,zend_pchar(ToStr(AR[I])),1); - 258: add_index_string(ht,i,zend_pchar(zend_ustr(ToStr(AR[I]))),1); - end; + add_index_variant(ht,i,AR[i]); end; end; procedure ArrayToHash(Keys,AR: Array of Variant; var HT: pzval); overload; Var I,Len: Integer; - v: Variant; - key: zend_pchar; - s: zend_pchar; begin _array_init(ht,nil,1); len := Length(AR); for i:=0 to len-1 do begin - v := AR[I]; - key := zend_pchar(ToStrA(keys[i])); - s := zend_pchar(ToStrA(v)); - case VarType(AR[i]) of - varInteger, varSmallint, varLongWord, 17: add_assoc_long_ex(ht,ToPChar(Keys[i]),strlen(ToPChar(Keys[i]))+1,AR[i]); - varDouble,varSingle: add_assoc_double_ex(ht,ToPChar(Keys[i]),strlen(ToPChar(Keys[i]))+1,AR[i]); - varBoolean: add_assoc_bool_ex(ht,ToPChar(Keys[i]),strlen(ToPChar(Keys[i]))+1,AR[I]); - varEmpty: add_assoc_null_ex(ht,ToPChar(Keys[i]),strlen(ToPChar(Keys[i]))+1); - varString,258: add_assoc_string_ex(ht,key,strlen(key)+1,s,1); - end; + add_assoc_variant(ht, ToPChar(Keys[i]),strlen(ToPChar(Keys[i]))+1,AR[i]); end; end; function add_next_index_variant(arg: pzval; value: variant): integer; var iz: pzval; - W: WideString; - S: String; begin iz := MAKE_STD_ZVAL; if VarIsEmpty(value) then @@ -1840,54 +1819,37 @@ function add_next_index_variant(arg: pzval; value: variant): integer; Result := add_next_index_zval(arg, iz); Exit; end; - // MessageBoxA(0, zend_pchar(AnsiString( TVarData(Value).VType.ToString)), '', 0 ) ; - case TVarData(Value).VType of - varString : //Peter Enz - begin - if Assigned ( TVarData(Value).VString ) then - begin - ZVAL_STRING(iz, TVarData(Value).VString , true); - end - else - begin - ZVAL_STRING(iz, '', true); - end; - end; - - varUString : //Peter Enz - begin - S := string(TVarData(Value).VUString); - - ZVAL_STRING(iz, zend_pchar(zend_ustr(S)), true); - end; + VariantToZend(Value,iz); + Result := add_next_index_zval(arg, iz); +end; - varOleStr : //Peter Enz - begin - if Assigned ( TVarData(Value).VOleStr ) then - begin - W := WideString(Pointer(TVarData(Value).VOleStr)); - ZVAL_STRINGW(iz, PWideChar(W), true); - end - else - begin - ZVAL_STRING(iz, '', true); - end; - end; - varSmallInt : ZVALVAL(iz, TVarData(Value).VSmallint); - varInteger : ZVALVAL(iz, TVarData(Value).VInteger); - varBoolean : ZVALVAL(iz, TVarData(Value).VBoolean); - varSingle : ZVALVAL(iz, TVarData(Value).VSingle); - varDouble : ZVALVAL(iz, TVarData(Value).VDouble); - varError : ZVALVAL(iz, TVarData(Value).VError); - varByte : ZVALVAL(iz, TVarData(Value).VByte); - varDate : ZVALVAL(iz, TVarData(Value).VDate); - else - ZVAL_NULL(iz); +function add_index_variant(arg: pzval; index:integer; value: variant): integer; +var iz: pzval; +begin + iz := MAKE_STD_ZVAL; + if VarIsEmpty(value) then + begin + ZVAL_NULL(iz); + Result := add_index_zval(arg, index, iz); + Exit; end; - - Result := add_next_index_zval(arg, iz); + VariantToZend(Value,iz); + Result := add_index_zval(arg, index, iz); end; +function add_assoc_variant(arg: pzval; key: zend_pchar; key_len: uint; value: variant): integer; +var iz: pzval; +begin + iz := MAKE_STD_ZVAL; + if VarIsEmpty(value) then + begin + ZVAL_NULL(iz); + Result := add_assoc_zval_ex(arg, key, key_len, iz); + Exit; + end; + VariantToZend(Value,iz); + Result := add_assoc_zval_ex(arg, key, key_len, iz); +end; procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; var @@ -2069,51 +2031,6 @@ procedure ZVAL_ARRAY(z: pzval; arr: Variant); overload; for i := 0 to arr.DimCount-1 do begin - {V := TVarData( arr[i] ); - case V.VType of - varEmpty, varNull: - add_next_index_null(z); - varSmallInt: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VSmallInt))), 1); - varInteger: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VInteger))), 1); - varSingle: - add_next_index_string(z, zend_pchar(zend_ustr(V.VSingle.ToString())), 1); - varDouble: - add_next_index_double(z, V.VDouble); - varCurrency: - add_next_index_string(z, zend_pchar(zend_ustr(CurrToStr(V.VCurrency))), 1); - varDate: - add_next_index_string(z, zend_pchar(zend_ustr(DateTimeToStr(V.VDate))), 1); - varOleStr: - add_next_index_string(z, zend_pchar(zend_ustr(V.VOleStr)), 1); - varBoolean: - add_next_index_bool(z, V.VBoolean.ToInteger()); - varByte: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VByte))), 1); - varWord: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VWord))), 1); - varShortInt: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VShortInt))), 1); - varLongWord: - add_next_index_long(z, V.VLongWord); - varInt64: - add_next_index_string(z, zend_pchar(zend_ustr(IntToStr(V.VInt64))), 1); - varString: - add_next_index_string(z, zend_pchar(zend_ustr(V.VString)), 1); - {$IFDEF SUPPORTS_UNICODE_STRING}{ - varUString: - add_next_index_string(z, zend_pchar(zend_ustr(V.VUString)), 1); - {$ENDIF SUPPORTS_UNICODE_STRING} - {varArray, - varDispatch, - varError, - varUnknown, - varAny, - varByRef:}{ - varObject: - add_next_index_long(z, Integer( - end; } add_next_index_variant(z, arr[i]); end; Exit; From 83db7ac22559d4b46526f01d1f82c6f1a6d0888c Mon Sep 17 00:00:00 2001 From: Andrew Zenin Date: Mon, 5 Aug 2019 13:54:34 +0300 Subject: [PATCH 15/35] Fixed critical bug --- Source/PHPFunctions.pas | 16 ++++------------ Source/ZENDAPI.pas | 2 +- Source/php4delphi.pas | 31 +++++++++++++++++++------------ 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index 48b47de..8875c7f 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -663,10 +663,7 @@ function TZendVariable.GetAsVariant: variant; function TZendVariable.GetDataType: integer; begin if not Assigned(FValue) then - begin - Result := IS_NULL; - Exit; - end; + Exit(IS_NULL); Result := {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF}; end; @@ -674,20 +671,15 @@ function TZendVariable.GetDataType: integer; function TZendVariable.GetIsNull: boolean; begin if not Assigned(FValue) then - begin - Result := true; - Exit; - end; + Exit(True); + Result := {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} = IS_NULL; end; function TZendVariable.GetTypeName: string; begin if not Assigned(FValue) then - begin - Result := 'null'; - Exit; - end; + Exit('null'); case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of IS_NULL: result := 'null'; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 15af527..accf608 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -1635,7 +1635,7 @@ procedure VariantToZend(const Value:Variant;z:pzval; W : WideString; S: String; begin - if VarIsEmpty(value) then + if VarIsEmpty(value) or VarIsNull(Value) then begin ZVALVAL(z); Exit; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 4fe98e7..35a7d96 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -1503,7 +1503,16 @@ function TPHPEngine.GetConstantCount: integer; begin Result := FConstants.Count; end; - +{ +procedure log(i:String); +var f:TextFile; +begin + AssignFile(f, 'log.txt'); + Append(f); + Write(f, #10 + #13 + i); + CloseFile(f); +end; +} procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; return_value_ptr: ppzval; this_ptr: pzval; return_value_used: integer; TSRMLS_DC: pointer); @@ -1519,7 +1528,6 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; ReturnValue : variant; begin FParameters := TFunctionParams.Create(nil, TFunctionParam); - try if ht > 0 then begin @@ -1564,23 +1572,22 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; FParameters[j].ZendValue := (Params[j]^); end; end; { if ht > 0} - + //log(FActiveFunctionName); FZendVar := TZendVariable.Create; - try FZendVar.AsZendVariable := return_value; AFunction.OnExecute(Self, FParameters, ReturnValue, FZendVar, TSRMLS_DC); - if FZendVar.ISNull then {perform variant conversion} - VariantToZend(ReturnValue, return_value); - finally - FZendVar.Free; - end; + if Assigned(FZendVar) then + begin + if FZendVar.ISNull then {perform variant conversion} + VariantToZend(ReturnValue, return_value); + FZendVar.Free; + end + else + VariantToZend(ReturnValue, return_value); end; {if assigned AFunction.OnExecute} end; - - finally FParameters.Free; dispose_pzval_array(Params); - end; end; procedure TPHPEngine.PrepareIniEntry; From 8c1d55525016c8d23424695dd164906be029742c Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 00:44:22 +0200 Subject: [PATCH 16/35] Update Unified ZVAL functions and some routines Removed PHP4 from support list as it's gone a long time ago already Fixed some AVs and uncorrect functions Added pointer checking Removed legacy code --- .gitignore | 7 +- Source/Clear.bat | 9 +- Source/DelphiFunctions.pas | 655 +---------- Source/Demos/psvPHP/console/phpcon.dpr | 49 +- Source/Demos/psvPHP/console/phpcon.dproj | 559 ++++++++++ Source/PHP.INC | 24 +- Source/PHPAPI.pas | 442 +++----- Source/PHPCommon.pas | 12 +- Source/PHPFunctions.pas | 4 +- Source/PHPTypes.pas | 7 +- Source/ZENDAPI.pas | 1272 +++++++++------------- Source/ZendTypes.pas | 110 +- Source/php4AppUnit.pas | 46 +- Source/php4delphi.pas | 215 ++-- Source/phpClass.pas | 255 +---- Source/phpModules.pas | 10 +- 16 files changed, 1399 insertions(+), 2277 deletions(-) create mode 100644 Source/Demos/psvPHP/console/phpcon.dproj diff --git a/.gitignore b/.gitignore index 06ae224..294f54a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ __history/ __recovery/ -*.dcu \ No newline at end of file +*.dcu +*.local +*.exe +*.identcache +*.stat +*.res diff --git a/Source/Clear.bat b/Source/Clear.bat index 235952d..a1358fa 100644 --- a/Source/Clear.bat +++ b/Source/Clear.bat @@ -1 +1,8 @@ -del *.dcu +del /f php4delphi.dcu +del /f phpFunctions.dcu +del /f DelphiFunctions.dcu +del /f PHPCommon.dcu +del /f PHPAPI.dcu +del /f ZENDAPI.dcu +del /f PHPTypes.dcu +del /f ZendTypes.dcu diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 78a0a2a..3be090d 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -6,6 +6,7 @@ { Serhiy Perevoznyk } { serge_perevoznyk@hotmail.com } { http://users.telenet.be/ws36637 } +{ http://users.chello.be/ws36637 } {*******************************************************} {$I PHP.INC} @@ -16,9 +17,9 @@ interface uses SysUtils, Classes, - Controls, - {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} ZendAPI, PHPTypes, PHPAPI, Dialogs, typinfo, - Forms, stdctrls; + VCL.Controls, + {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} ZendAPI, PHPTypes, PHPAPI, VCL.Dialogs, typinfo, + VCL.Forms, VCL.stdctrls; {$ifdef fpc} {$mode delphi} @@ -28,134 +29,27 @@ interface author_class_entry : Tzend_class_entry; delphi_object_entry : TZend_class_entry; - - object_functions : {$IFDEF PHP7}HashTable{$ELSE}array[0..2] of zend_function_entry{$ENDIF}; - author_functions : {$IFDEF PHP7}HashTable{$ELSE}array[0..2] of zend_function_entry{$ENDIF}; - DelphiObject : pzend_class_entry; ce : pzend_class_entry; - {$IFDEF PHP7} - DelphiObjectHandlers : _zend_object_handlers; - {$ELSE} - {$IFDEF PHP5} - DelphiObjectHandlers : zend_object_handlers; - {$ENDIF} - {$ENDIF} + DelphiObjectHandlers : _zend_object_handlers; procedure RegisterInternalClasses(p : pointer); - -//proto string delphi_get_system_directory(void) -{$IFDEF PHP510} -procedure delphi_get_system_directory(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_get_system_directory(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - //proto string delphi_str_date(void) -{$IFDEF PHP510} procedure delphi_str_date(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_str_date(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} //proto float delphi_date(void) -{$IFDEF PHP510} procedure delphi_date(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_date(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -//proto string delphi_extract_file_dir(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_dir(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_dir(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -//proto string delphi_extract_file_drive(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_drive(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_drive(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -//proto string delphi_extract_file_name(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_name(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_name(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -//proto string delphi_extract_file_ext(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_ext(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_ext(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -//proto void delphi_show_message(string message) -{$IFDEF PHP510} -procedure delphi_show_message(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_show_message(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} //proto string delphi_input_box(string caption, string prompt, string default) -{$IFDEF PHP510} procedure delphi_input_box(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_input_box(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -{$IFDEF PHP510} -procedure register_delphi_object(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure register_delphi_object(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -{$IFDEF PHP5} procedure delphi_get_author(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_get_author(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -{$IFDEF PHP5} -procedure delphi_is_uc(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_is_uc(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -{$IFDEF PHP510} -procedure register_delphi_component(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure register_delphi_component(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} const SimpleProps = [tkInteger, tkChar, tkEnumeration, tkFloat, @@ -163,114 +57,22 @@ procedure register_delphi_component(ht : integer; return_value : pzval; this_ptr implementation - - -//proto string delphi_get_system_directory(void) -{$IFDEF PHP510} -procedure delphi_get_system_directory(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_get_system_directory(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - //proto string delphi_str_date(void) -{$IFDEF PHP510} procedure delphi_str_date(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_str_date(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} begin ZVAL_STRING(return_value, zend_pchar(DateToStr(Date)), true); end; //proto float delphi_date(void) -{$IFDEF PHP510} procedure delphi_date(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_date(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} begin ZVALVAL(return_value, Date); end; - -//proto string delphi_extract_file_dir(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_dir(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_dir(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - -//proto string delphi_extract_file_drive(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_drive(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_drive(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - -//proto string delphi_extract_file_name(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_name(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_name(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - -//proto string delphi_extract_file_ext(string source) -{$IFDEF PHP510} -procedure delphi_extract_file_ext(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_extract_file_ext(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - -//proto void delphi_show_message(string message) -{$IFDEF PHP510} -procedure delphi_show_message(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_show_message(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -begin - -end; - - //proto string delphi_input_box(string caption, string prompt, string default) -{$IFDEF PHP510} procedure delphi_input_box(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_input_box(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} var p: pzval_array; begin if ht <> 3 then @@ -279,343 +81,15 @@ procedure delphi_input_box(ht : integer; return_value : pzval; this_ptr : pzval; exit; end; zend_get_parameters_my(ht, p, TSRMLS_DC); + {$IFNDEF PHP7} ZVAL_STRINGW(return_value, PWideChar(InputBox( Z_STRVAL(p[0]^), Z_STRVAL(p[1]^), Z_STRVAL(p[2]^) )), true); + {$ENDIF} dispose_pzval_array(p); end; -//proto void delphi_send_message(void) -{$IFDEF PHP510} -procedure delphi_send_email(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_send_email(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - //ShellExecute(0, 'open', 'mailto:serge_perevoznyk@hotmail.com', nil, nil, SW_SHOWNORMAL); -end; - -//proto void delphi_visit_homepage(void) -{$IFDEF PHP510} -procedure delphi_visit_homepage(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_visit_homepage(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - //ShellExecute(0, 'open', 'http://users.chello.be/ws36637', nil, nil, SW_SHOW); -end; - - //Delphi objects support - -{$IFDEF PHP510} -procedure delphi_object_classname(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_object_classname(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin - -end; - -{$IFDEF PHP510} -procedure delphi_object_classnameis(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_object_classnameis(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -begin -end; - - - -{$IFDEF PHP4} -function delphi_set_property_handler(property_reference : Pzend_property_reference; value : pzval) : integer; cdecl; -var - this_ptr : pzval; - OBJ : TObject; - data: ^ppzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - p : pointer; - propname : zend_ustr; -// --> hupu, 2006.06.01 -// pt : TTypeKind; -{$IFDEF VERSION7} - Scripter : TPHPScriptableObject; -{$ELSE} - pt : TypInfo.TTypeKind; -{$ENDIF} -// <-- hupu, 2006.06.01 -begin - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - - this_ptr := property_reference^._object; - new(data); - zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data); - Obj := TObject(data^^^.value.lval); - freemem(data); - -// --> hupu, 2006.06.01 -{$IFDEF VERSION7} - Scripter := TPHPScriptableObject(Obj); - if SameText('Parent', propname) then - begin - TWinControl(Scripter.InstanceObj).Parent := - TWinControl(value^.value.lval); - end - else - Scripter.SetPropertyByID(Scripter.NameToDispID(propname), - [zval2variant(value^)] ); -{$ELSE} -// <-- hupu, 2006.06.01 - - pt := PropType(Obj, propname); - if ( pt in SimpleProps) then - SetPropValue(OBJ, propname, zval2variant(value^)) - else - if pt = tkClass then - begin - Obj := GetObjectProp(Obj, propname); - while element <> nil do - begin - element := element^.prev; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - pt := PropType(Obj, propname); - if ( pt in SimpleProps) then - begin - SetPropValue(OBJ, propname, zval2variant(value^)); - break; - end - else - if pt = tkClass then - Obj := GetObjectProp(Obj, propname); - end; - end; - -// --> hupu, 2006.06.01 -{$ENDIF} -// <-- hupu, 2006.06.01 - Result := SUCCESS; -end; - - - -procedure delphi_get_property_handler(val : pzval; property_reference : PZend_property_reference); cdecl; -var - this_ptr : pzval; - OBJ : TObject; - data: ^ppzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - p : pointer; - propname : zend_ustr; -// --> hupu, 2006.06.01 -// pt : TTypeKind; -{$IFDEF VERSION7} - Scripter : TPHPScriptableObject; -{$ELSE} - pt : TypInfo.TTypeKind; -{$ENDIF} -// <-- hupu, 2006.06.01 -begin - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - this_ptr := property_reference^._object; - new(data); - zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data); - Obj := TObject(data^^^.value.lval); - freemem(data); - -// --> hupu, 2006.06.01 -{$IFDEF VERSION7} -Scripter := TPHPScriptableObject(Obj); -if SameText('Parent', propname) then -begin -TWinControl(Scripter.InstanceObj).Parent := -TWinControl(val^.value.lval); -end -else - -Scripter.SetPropertyByID(Scripter.NameToDispID(propname), -[zval2variant(val^)] ); -{$ELSE} -// <-- hupu, 2006.06.01 - pt := PropType(Obj, propname); - if ( pt in SimpleProps) then - variant2zval(GetPropValue(OBJ, propname), val) - else - if pt = tkClass then - begin - Obj := GetObjectProp(Obj, propname); - while element <> nil do - begin - element := element^.prev; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - pt := PropType(Obj, propname); - if ( pt in SimpleProps) then - begin - variant2zval(GetPropValue(OBJ, propname), val); - break; - end - else - if pt = tkClass then - Obj := GetObjectProp(Obj, propname); - end; - end; -// --> hupu, 2006.06.01 -{$ENDIF} -// <-- hupu, 2006.06.01 -end; - - -{$IFDEF PHP4} -procedure _delphi_get_property_wrapper; assembler; -asm - push ebp - mov ebp,esp - sub esp,50h - push ebx - push esi - push edi - lea edi,[ebp-50h] - mov ecx,14h - mov eax,0CCCCCCCCh - rep stosd - mov eax,dword ptr [ebp+0Ch] - push eax - lea ecx,[ebp-10h] - push ecx - call delphi_get_property_handler - add esp,8 - mov edx,dword ptr [ebp+8] - mov eax,dword ptr [ebp-10h] - mov dword ptr [edx],eax - mov ecx,dword ptr [ebp-0Ch] - mov dword ptr [edx+4],ecx - mov eax,dword ptr [ebp-8] - mov dword ptr [edx+8],eax - mov ecx,dword ptr [ebp-4] - mov dword ptr [edx+0Ch],ecx - mov eax,dword ptr [ebp+8] - - pop edi - pop esi - pop ebx - add esp,50h - cmp ebp,esp - mov esp,ebp - pop ebp - ret -end; -{$ENDIF} - -procedure delphi_call_function(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer; property_reference : Pzend_property_reference ); cdecl; -var - OBJ : TObject; - data: ^ppzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - p : pointer; - MethodName : zend_ustr; - Params : pzval_array; - M, D : integer; -begin - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - MethodName := prop^.element.value.str.val; - this_ptr := property_reference^._object; - new(data); - zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data); - Obj := TObject(data^^^.value.lval); - freemem(data); - if ( Obj.InheritsFrom(TCustomEdit) ) then - begin - if SameText(MethodName, 'Clear') then - TCustomEdit(Obj).Clear; - if SameText(MethodName, 'ClearSelection') then - TCustomEdit(Obj).ClearSelection; - if SameText(MethodName, 'CopyToClipboard') then - TCustomEdit(Obj).CopyToClipboard; - if SameText(MethodName, 'ControlCount') then - ZVAL_LONG(return_value, TCustomEdit(Obj).ControlCount); - if SameText(MethodName, 'ScaleBy') then - begin - if ht > 0 then - begin - if ( not (zend_get_parameters_ex(ht, Params) = SUCCESS )) then - begin - zend_wrong_param_count(TSRMLS_DC); - Exit; - end; - end; - M := Params[0]^.value.lval; - D := Params[1]^.value.lval; - TCustomEdit(Obj).ScaleBy(M, D); - dispose_pzval_array(Params); - end; - end; -end; -{$ENDIF} - - - -{$IFDEF PHP5} - -// Read object property value (getter) -function delphi_get_property_handler(_object : pzval; member : pzval; _type : integer; TSRMLS_DC : pointer) : pzval; cdecl; -begin - -end; - -// Write object property value (setter) -procedure delphi_set_property_handler(_object : pzval; member : pzval; value : pzval; TSRMLS_DC : pointer); cdecl; -begin - -end; - -{$IFDEF PHP510} -function delphi_call_method(method : zend_pchar; ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer) : integer; cdecl; -{$ELSE} -function delphi_call_method(method : zend_pchar; ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer) : integer; cdecl; -{$ENDIF} -begin - -end; - -function delphi_get_method(_object : pzval; method_name : zend_pchar; method_len : integer; TSRMLS_DC : pointer) : {$IFDEF PHP7}P_zend_function{$ELSE}PzendFunction{$ENDIF}; cdecl; - -begin - -end; - - -{$ENDIF} - -{$IFDEF PHP5} procedure delphi_get_author(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_get_author(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} var properties : array[0..3] of zend_pchar; begin @@ -623,68 +97,13 @@ procedure delphi_get_author(ht : integer; return_value : pzval; this_ptr : pzval properties[1] := 'last'; properties[2] := 'height'; properties[3] := 'email'; - {$IFDEF PHP4} - _object_init_ex(return_value, ce, nil, 0, TSRMLS_DC ); - {$ELSE} object_init(return_value, ce, TSRMLS_DC ); - {$ENDIF} - - {$IFDEF PHP4} - add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1); - add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Perevoznyk', 1); - {$ELSE} add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1, TSRMLS_DC); add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Perevoznyk', 1, TSRMLS_DC); - {$ENDIF} - - {$IFDEF PHP5} add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185, TSRMLS_DC); - {$ELSE} - add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185); - {$ENDIF} - - {$IFDEF PHP4} - add_property_string_ex(return_value, properties[3], strlen(properties[3]) + 1, 'serge_perevoznyk@hotmail.com', 1); - {$ELSE} add_property_string_ex(return_value, properties[3], strlen(properties[3]) + 1, 'serge_perevoznyk@hotmail.com', 1, TSRMLS_DC); - {$ENDIF} end; -{$IFDEF PHP5} -procedure delphi_is_uc(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure delphi_is_uc(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); -{$ENDIF} -begin - ZVALVAL(return_value, {$IFDEF PHP_UNICE}TRUE{$ELSE}FALSE{$ENDIF}); -end; - -{$IFDEF PHP510} -procedure register_delphi_object(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure register_delphi_object(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -begin - -end; - -{$IFDEF PHP510} -procedure register_delphi_component(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure register_delphi_component(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} - -begin - - -end; @@ -694,66 +113,12 @@ procedure RegisterInternalClasses(p : pointer); {$IFDEF PHP7} ! {$ELSE} - object_functions[0].fname := 'delphi_classname'; - object_functions[0].handler := @delphi_object_classname; - - object_functions[1].fname := 'delphi_classnameis'; - object_functions[1].handler := @delphi_object_classnameis; - - object_functions[2].fname := nil; - object_functions[2].handler := nil; - - INIT_CLASS_ENTRY(delphi_object_entry, 'delphi_class' , @object_functions); - {$ENDIF} - {$IFDEF PHP4} - Delphi_Object_Entry.handle_property_get := @_delphi_get_property_wrapper; - Delphi_Object_Entry.handle_property_set := @delphi_set_property_handler; - Delphi_Object_Entry.handle_function_call := @delphi_call_function; - {$ELSE} - Move(zend_get_std_object_handlers()^, DelphiObjectHandlers, sizeof({$IFDEF PHP7}_zend_object_handlers{$ELSE}zend_object_handlers{$ENDIF})); - DelphiObjectHandlers.read_property := @delphi_get_property_handler; - DelphiObjecthandlers.write_property := @delphi_set_property_handler; - DelphiObjectHandlers.call_method := @delphi_call_method; - DelphiObjectHandlers.get_method := @delphi_get_method; - {$ENDIF} + Move(zend_get_std_object_handlers()^, DelphiObjectHandlers, sizeof(_zend_object_handlers)); DelphiObject := zend_register_internal_class(@delphi_object_entry, p); - author_functions[0].fname := 'send_email'; - author_functions[0].handler := @delphi_send_email; - - author_functions[1].fname := 'visit_homepage'; - author_functions[1].handler := @delphi_visit_homepage; - - author_functions[2].fname := nil; - author_functions[2].handler := nil; - INIT_CLASS_ENTRY(author_class_entry, 'php4delphi_author', @author_functions); + INIT_CLASS_ENTRY(author_class_entry, 'php4delphi_author', nil); ce := zend_register_internal_class(@author_class_entry, p); - -end; - -{$IFDEF VERSION7} - -{ -Delphi scripting support -The Original Code is: JvOle2Auto.PAS, released on 2002-07-04. -The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev -Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev -Copyright (c) 2001,2002 SGB Software -All Rights Reserved. -} - - -function WashVariant(const Value: Variant): OleVariant; -begin - if TVarData(Value).VType = (varString or varByRef) then - Result := PString(TVarData(VAlue).VString)^ + '' - else - Result := Value; + {$ENDIF} end; - - - -{$ENDIF} - end. diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index 1aa6530..5ac140b 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -1,4 +1,4 @@ -{$APPTYPE CONSOLE} +{$APPTYPE CONSOLE} {*******************************************************} { PHP4Delphi } @@ -13,22 +13,55 @@ program phpcon; -uses SysUtils, php4delphi; - +uses + SysUtils, + VCL.Dialogs, + php4delphi, + zendAPI, + ZENDTypes; var php : TpsvPHP; Engine : TPHPEngine; + +procedure gui_message(ht: integer; return_value: pzval; + return_value_ptr: pzval; this_ptr: pzval; return_value_used: integer; + TSRMLS_DC: pointer); cdecl; +var + Text: pzval; +begin + if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @Text) = 0 then + begin + ShowMessage(Z_STRVAL(Text)); + end; +end; + procedure grc(ht: integer; return_value: pzval; + return_value_ptr: pzval; this_ptr: pzval; return_value_used: integer; + TSRMLS_DC: pointer); cdecl; +var + p: pzval; begin - if ParamCount <> 1 then + if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @p) = 0 then begin - writeln(Format('Usage: %s ', [ParamStr(0)])); - Halt(1); + p^.value.lval := 0; end; +end; +begin Engine := TPHPEngine.Create(nil); + Engine.AddFunction('gui_message', @gui_message); + Engine.AddFunction('g_r_c', @grc); + Engine.HandleErrors := True; Engine.StartupEngine; php := TpsvPHP.Create(nil); - php.FileName := ParamStr(1); - write(php.Execute); + if ParamCount = 1 then + begin + php.FileName := ParamStr(1); + write(php.Execute); + end + else + begin + writeLn(Format('Usage: %s ', [ParamStr(0)])); + writeLn(php.RunCode('')); + end; php.Free; Engine.ShutdownEngine; Engine.Free; diff --git a/Source/Demos/psvPHP/console/phpcon.dproj b/Source/Demos/psvPHP/console/phpcon.dproj new file mode 100644 index 0000000..fdd2dd5 --- /dev/null +++ b/Source/Demos/psvPHP/console/phpcon.dproj @@ -0,0 +1,559 @@ + + + {BDB76098-EDD6-4A5A-AF30-D7A6B0BCF914} + phpcon.dpr + True + Debug + 3 + Console + None + 18.2 + Win64 + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + ..\..\..\;$(DCC_UnitSearchPath) + C:\elsewere + false + 1058 + false + 00400000 + System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + phpcon + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + false + false + false + $(BDS)\bin\delphi_PROJECTICNS.icns + + + android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar + true + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + true + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + true + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + true + true + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= + Debug + true + true + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + true + + + C:\elsewere\x32 + (None) + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) + + + 1033 + C:\elsewere\x64 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + (None) + Debug + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + 0 + false + 0 + RELEASE;$(DCC_Define) + + + 1033 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) + + + true + DEBUG;$(DCC_Define) + false + + + 1033 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + + + + MainSource + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + Delphi.Personality.12 + + + + + phpcon.dpr + + + File C:\Program Files (x86)\FastReports\LibD24\dclfrx24.bpl not found + File C:\Program Files (x86)\FastReports\LibD24\dclfrxDB24.bpl not found + File C:\Program Files (x86)\FastReports\LibD24\dclfrxe24.bpl not found + File C:\Program Files (x86)\FastReports\LibD24\dclfrxtee24.bpl not found + Embarcadero C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + BCEditor Components + + + + False + True + True + + + + + true + + + + + true + + + + + true + + + + + true + + + + + phpcon.exe + true + + + + + 0 + .dll;.bpl + + + 1 + .dylib + + + + + Contents\Resources + 1 + + + + + classes + 1 + + + + + Contents\MacOS + 0 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + library\lib\mips + 1 + + + + + 1 + + + 1 + + + 0 + + + 1 + + + 1 + + + library\lib\armeabi-v7a + 1 + + + 1 + + + + + 0 + + + 1 + .framework + + + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + 1 + + + 1 + + + 1 + + + + + + library\lib\armeabi + 1 + + + + + 0 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-normal + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-large + 1 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + res\drawable-hdpi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + + + Assets + 1 + + + Assets + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\values + 1 + + + + + res\drawable-small + 1 + + + + + res\drawable + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + + + res\drawable + 1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 0 + .bpl + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\drawable-ldpi + 1 + + + + + + + + + + + + + + 12 + + + + + diff --git a/Source/PHP.INC b/Source/PHP.INC index 6347b1e..2662f6d 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -12,8 +12,7 @@ { $Id: PHP.INC,v 7.4 10/2009 delphi32 Exp $ } {IMPORTANT: -If you are using PHP version 4.2.x...4.3.0 please change $DEFINE PHP433 to $DEFINE PHP430 -If you are using PHP version 5.0 please change $DEFINE PHP433 to $DEFINE PHP5 or remove it +If you are using PHP version 5.0 please add $DEFINE PHP5 If you are using PHP version 5.0.4 please add $DEFINE PHP504 If you are using PHP version 5.1.0 or higher please add $DEFINE PHP510 If you are using PHP version 5.1.1 or higher please add $DEFINE PHP511 @@ -36,15 +35,6 @@ Sorry for such complicated configuration, but PHP team does not keep backward compatibility between PHP versions. } - -{.$DEFINE PHP4} -{.$DEFINE PHP430} -{.$DEFINE PHP433} -{.$DEFINE PHP435} -{.$DEFINE PHP446} - -{If you are using PHP 4 please comment $DEFINE PHP5} - {PHP5 must be defined if you are using PHP5} {$DEFINE PHP5} @@ -62,9 +52,9 @@ backward compatibility between PHP versions. {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} -{$DEFINE soulengine_build} +{s$DEFINE soulengine_build} {.$DEFINE PHP7} -{.$DEFINE P_CUT} +{.$DEFINE CUTTED_PHP7dll} {$IFDEF PHP7} {$DEFINE COMPILER_VC14} {$DEFINE PHP560} @@ -86,20 +76,12 @@ backward compatibility between PHP versions. //problems {$IFDEF PHP_COMPILER_ID} - {.$DEFINE COMPILER_VC6} {$DEFINE COMPILER_VC9} {$IFNDEF PHP7} {$IFDEF PHP550} {$DEFINE COMPILER_VC11} {$ENDIF} {$ENDIF} {$ENDIF} -{$IFDEF PHP5} - {$UNDEF PHP4} - {$UNDEF PHP430} - {$UNDEF PHP433} - {$UNDEF PHP435} - {$UNDEF PHP446} -{$ENDIF} {$WARN UNIT_DEPRECATED OFF} {.$DEFINE QUIET_LOAD} //Do not show error while loading php4ts.dll or php5ts.dll (depends from php version) diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 1f0cf58..d1a6baf 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -22,7 +22,7 @@ interface uses {Windows} SysUtils, - + VCL.Dialogs, {$IFDEF FPC} dynlibs {$ELSE} @@ -66,7 +66,7 @@ interface sapi_add_header_ex: function(header_line : zend_pchar; header_line_len : uint; duplicated : zend_bool; replace : zend_bool; TSRMLS_DC : pointer) : integer; cdecl; - php_execute_script : function (primary_file: pointer; TSRMLS_D : pointer) : Integer; cdecl; + php_execute_script : function (primary_file: PZendFileHandle; TSRMLS_D : pointer) : {$IFDEF CPUX64} Int64 {$ELSE} Integer{$ENDIF}; cdecl; php_handle_aborted_connection: procedure; cdecl; @@ -120,8 +120,10 @@ interface php_get_output_start_filename: function (TSRMLS_D : pointer) : zend_pchar; cdecl; php_get_output_start_lineno: function (TSRMLS_D : pointer) : integer; cdecl; php_ob_handler_used: function (handler_name : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; + {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} php_ob_init_conflict: function (handler_new : zend_pchar; handler_set : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; {$ENDIF} + {$ENDIF} //php_output.h @@ -175,7 +177,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; -{$IFNDEF P_CUT} +{$IFNDEF CUTTED_PHP7dll} php_log_err: procedure (err_msg : zend_pchar; TSRMLS_DC : pointer); cdecl; {$ENDIF} php_html_puts: procedure (str : zend_pchar; str_len : integer; TSRMLS_DC : pointer); cdecl; @@ -213,12 +215,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; php_raw_url_encode: function (s : zend_pchar; len : Integer; new_length : PInteger) : zend_pchar; cdecl; -{$IFDEF PHP5} php_register_extensions: function (ptr : PPzend_module_entry; count: integer; TSRMLS_DC: pointer) : integer; cdecl; -{$ELSE} -php_startup_extensions: function (ptr: pointer; count : integer) : integer; cdecl; -{$ENDIF} - php_error_docref0: procedure (const docref : zend_pchar; TSRMLS_DC : pointer; _type : integer; const Msg : zend_pchar); cdecl; php_error_docref: procedure (const docref : zend_pchar; TSRMLS_DC : pointer; _type : integer; const Msg : zend_pchar); cdecl; @@ -235,7 +232,7 @@ function GetEnvVariables : pzval; function GetFilesVariables : pzval; function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; -function PG(TSRMLS_DC : pointer) : Pphp_Core_Globals; +//function PG(TSRMLS_DC : pointer) : Pphp_Core_Globals; procedure PHP_FUNCTION(var AFunction : zend_function_entry; AName : zend_pchar; AHandler : pointer); @@ -246,15 +243,12 @@ procedure UnloadPHP; function PHPLoaded : boolean; -{$IFNDEF QUIET_LOAD} -procedure CheckPHPErrors; -{$ENDIF} - function FloatToValue(Value: Extended): zend_ustr; function ValueToFloat(Value : zend_ustr) : extended; var +//Info.h php_print_info: procedure (flag : Integer; TSRMLS_DC : pointer); cdecl; @@ -275,12 +269,14 @@ function ValueToFloat(Value : zend_ustr) : extended; php_info_print_table_row : procedure (n2 : integer; c1, c2 : zend_pchar); cdecl; php_info_print_table_end: procedure (); cdecl; - +{$IF Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} +php_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; +{$ELSE} php_body_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; php_header_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; +{$ENDIF} - -php_header: function() : integer; cdecl; +php_header: function(TSRMLS_D: pointer) : integer; cdecl; php_setcookie: function (name : zend_pchar; name_len : integer; value : zend_pchar; value_len: integer; expires : longint; path : zend_pchar; path_len : integer; domain : zend_pchar; domain_len : integer; secure : integer; TSRMLS_DC : pointer) : integer; cdecl; @@ -310,49 +306,21 @@ function PHPLoaded : boolean; procedure UnloadPHP; var H : THandle; + vt: Integer; begin - H := InterlockedExchange(integer(PHPLib), 0); + vt := integer(PHPLib); + H := InterlockedExchange(vt, 0); if H > 0 then begin FreeLibrary(H); end; end; -{$IFDEF PHP4} -function GetSymbolsTable : PHashTable; -var - executor_globals : pointer; - executor_globals_value : integer; - executor_hash : PHashTable; - tsrmls_dc : pointer; -begin - if not PHPLoaded then - begin - Result := nil; - Exit; - end; - - executor_globals := GetProcAddress(PHPLib, 'executor_globals_id'); - executor_globals_value := integer(executor_globals^); - tsrmls_dc := tsrmls_fetch; - asm - mov ecx, executor_globals_value - mov edx, dword ptr tsrmls_dc - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - add ecx, 0DCh - mov executor_hash, ecx - end; - Result := executor_hash; -end; -{$ELSE} function GetSymbolsTable : PHashTable; begin Result := @GetExecutorGlobals.symbol_table; end; -{$ENDIF} - function GetTrackHash(Name : zend_ustr) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var data : ^ppzval; @@ -360,11 +328,7 @@ function GetTrackHash(Name : zend_ustr) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTa ret : integer; begin Result := nil; - {$IFDEF PHP4} arr := GetSymbolsTable; - {$ELSE} - arr := @GetExecutorGlobals.symbol_table; - {$ENDIF} if Assigned(Arr) then begin new(data); @@ -378,47 +342,19 @@ function GetTrackHash(Name : zend_ustr) : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTa function GetSAPIGlobals : Psapi_globals_struct; -var - sapi_globals_value : integer; - sapi_globals : Psapi_globals_struct; - tsrmls_dc : pointer; begin Result := nil; if Assigned(sapi_globals_id) then - begin - tsrmls_dc := tsrmls_fetch; - sapi_globals_value := integer(sapi_globals_id^); - asm - mov ecx, sapi_globals_value - mov edx, dword ptr tsrmls_dc - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov sapi_globals, ecx - end; - Result := sapi_globals; - end; + Result := __asm_fetchval(integer(sapi_globals_id^), tsrmls_fetch); end; function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; var sapi_global_id : pointer; - sapi_globals_value : integer; - sapi_globals : Psapi_globals_struct; - begin Result := nil; sapi_global_id := GetProcAddress(PHPLib, 'sapi_globals_id'); if Assigned(sapi_global_id) then - begin - sapi_globals_value := integer(sapi_global_id^); - asm - mov ecx, sapi_globals_value - mov edx, dword ptr tsrmls_dc - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov sapi_globals, ecx - end; - Result := sapi_globals; - end; + Result := __asm_fetchval(integer(sapi_globals_id^), TSRMLS_DC); end; function GetStringOf(const V: TVarData): string; @@ -468,52 +404,21 @@ function GetStringOf(const V: TVarData): string; end; function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; -var - core_globals_value : integer; - core_globals : Pphp_core_globals; begin Result := nil; if Assigned(core_globals_id) then - begin - core_globals_value := integer(core_globals_id^); - asm - mov ecx, core_globals_value - mov edx, dword ptr tsrmls_dc - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov core_globals, ecx - end; - Result := core_globals; - end; + Result := Pphp_Core_Globals(__asm_fetchval(integer(core_globals_id^), TSRMLS_DC)); end; - -function PG(TSRMLS_DC : pointer) : Pphp_Core_Globals; -begin - result := GetPHPGlobals(TSRMLS_DC); -end; - - - - procedure PHP_FUNCTION(var AFunction : zend_function_entry; AName : zend_pchar; AHandler : pointer); begin AFunction.fname := AName; AFunction.handler := AHandler; - {$IFDEF PHP4} - AFunction.func_arg_types := nil; - {$ELSE} AFunction.arg_info := nil; - {$ENDIF} end; - -{procedure phperror(Error : zend_pchar); -begin - zend_error(E_PARSE, Error); -end; } {$IFDEF PHP540} //HERE @@ -544,322 +449,229 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; php_default_post_reader := GetProcAddress(PHPLib, 'php_default_post_reader'); - sapi_add_header_ex := GetProcAddress(PHPLib, 'sapi_add_header_ex'); + LFunc(@sapi_add_header_ex, 'sapi_add_header_ex'); - php_request_startup := GetProcAddress(PHPLib, 'php_request_startup'); + LFunc(@php_request_startup, 'php_request_startup'); - php_request_shutdown := GetProcAddress(PHPLib, 'php_request_shutdown'); + LFunc(@php_request_shutdown, 'php_request_shutdown'); - php_module_startup := GetProcAddress(PHPLib, 'php_module_startup'); + LFunc(@php_module_startup, 'php_module_startup'); - php_module_shutdown := GetProcAddress(PHPLib, 'php_module_shutdown'); + LFunc(@php_module_shutdown, 'php_module_shutdown'); - php_module_shutdown_wrapper := GetProcAddress(PHPLib, 'php_module_shutdown_wrapper'); + LFunc(@php_module_shutdown_wrapper, 'php_module_shutdown_wrapper'); - sapi_startup := GetProcAddress(PHPLib, 'sapi_startup'); + LFunc(@sapi_startup, 'sapi_startup'); - sapi_shutdown := GetProcAddress(PHPLib, 'sapi_shutdown'); + LFunc(@sapi_shutdown, 'sapi_shutdown'); - sapi_activate := GetProcAddress(PHPLib, 'sapi_activate'); + LFunc(@sapi_activate, 'sapi_activate'); - sapi_deactivate := GetProcAddress(PHPLib, 'sapi_deactivate'); + LFunc(@sapi_deactivate, 'sapi_deactivate'); - php_execute_script := GetProcAddress(PHPLib, 'php_execute_script'); + LFunc(@php_execute_script, 'php_execute_script'); - php_handle_aborted_connection := GetProcAddress(PHPLib, 'php_handle_aborted_connection'); + LFunc(@php_handle_aborted_connection, 'php_handle_aborted_connection'); - php_register_variable := GetProcAddress(PHPLib, 'php_register_variable'); + LFunc(@php_register_variable, 'php_register_variable'); - php_register_variable_safe := GetProcAddress(PHPLib, 'php_register_variable_safe'); + LFunc(@php_register_variable_safe, 'php_register_variable_safe'); - php_register_variable_ex := GetProcAddress(PHPLib, 'php_register_variable_ex'); + LFunc(@php_register_variable_ex, 'php_register_variable_ex'); - php_output_startup := GetProcAddress(PHPLib, 'php_output_startup'); + LFunc(@php_output_startup, 'php_output_startup'); - php_output_activate := GetProcAddress(PHPLib, 'php_output_activate'); + LFunc(@php_output_activate, 'php_output_activate'); - php_output_set_status := GetProcAddress(PHPLib, 'php_output_set_status'); + LFunc(@php_output_set_status, 'php_output_set_status'); - php_output_register_constants := GetProcAddress(PHPLib, 'php_output_register_constants'); + LFunc(@php_output_register_constants, 'php_output_register_constants'); {$IFDEF PHP540} - php_start_ob_buffer := GetProcAddress(PHPLib, 'php_output_start_user'); + LFunc(@php_start_ob_buffer, 'php_output_start_user'); - php_start_ob_buffer_named := GetProcAddress(PHPLib, 'php_output_start_internal'); + LFunc(@php_start_ob_buffer_named, 'php_output_start_internal'); - php_end_ob_buffer := GetProcAddress(PHPLib, 'php_output_end'); + LFunc(@php_end_ob_buffer, 'php_output_end'); - php_end_ob_buffers := GetProcAddress(PHPLib, 'php_output_end_all'); + LFunc(@php_end_ob_buffers, 'php_output_end_all'); - php_ob_get_buffer := GetProcAddress(PHPLib, 'php_output_get_contents'); + LFunc(@php_ob_get_buffer, 'php_output_get_contents'); - php_ob_get_length := GetProcAddress(PHPLib, 'php_output_get_length'); + LFunc(@php_ob_get_length, 'php_output_get_length'); - php_output_set_implicit_flush :=GetProcAddress(PHPLib, 'php_output_set_implicit_flush'); + LFunc(@php_output_set_implicit_flush, 'php_output_set_implicit_flush'); - php_get_output_start_filename := GetProcAddress(PHPLib, 'php_output_get_start_filename'); + LFunc(@php_get_output_start_filename, 'php_output_get_start_filename'); - php_get_output_start_lineno := GetProcAddress(PHPLib, 'php_output_get_start_lineno'); + LFunc(@php_get_output_start_lineno, 'php_output_get_start_lineno'); - php_output_handler_started := GetProcAddress(PHPLib, 'php_output_handler_started'); + LFunc(@php_output_handler_started, 'php_output_handler_started'); {$ELSE} - php_start_ob_buffer := GetProcAddress(PHPLib, 'php_start_ob_buffer'); + LFunc(@php_start_ob_buffer, 'php_start_ob_buffer'); - php_start_ob_buffer_named := GetProcAddress(PHPLib, 'php_start_ob_buffer_named'); + php_start_ob_buffer_named, 'php_start_ob_buffer_named'); - php_end_ob_buffer := GetProcAddress(PHPLib, 'php_end_ob_buffer'); + php_end_ob_buffer, 'php_end_ob_buffer'); - php_end_ob_buffers := GetProcAddress(PHPLib, 'php_end_ob_buffers'); + php_end_ob_buffers, 'php_end_ob_buffers'); - php_ob_get_buffer := GetProcAddress(PHPLib, 'php_ob_get_buffer'); + php_ob_get_buffer, 'php_ob_get_buffer'); - php_ob_get_length := GetProcAddress(PHPLib, 'php_ob_get_length'); + php_ob_get_length, 'php_ob_get_length'); - php_start_implicit_flush := GetProcAddress(PHPLib, 'php_start_implicit_flush'); + php_start_implicit_flush, 'php_start_implicit_flush'); - php_end_implicit_flush := GetProcAddress(PHPLib, 'php_end_implicit_flush'); + php_end_implicit_flush, 'php_end_implicit_flush'); - php_get_output_start_filename := GetProcAddress(PHPLib, 'php_get_output_start_filename'); + php_get_output_start_filename, 'php_get_output_start_filename'); - php_get_output_start_lineno := GetProcAddress(PHPLib, 'php_get_output_start_lineno'); + php_get_output_start_lineno, 'php_get_output_start_lineno'); - php_ob_handler_used := GetProcAddress(PHPLib, 'php_ob_handler_used'); + php_ob_handler_used, 'php_ob_handler_used'); {$ENDIF} + {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} + php_ob_init_conflict, 'php_ob_init_conflict'); + {$ENDIF} + LFunc(@php_strtoupper, 'php_strtoupper'); - php_ob_init_conflict := GetProcAddress(PHPLib, 'php_ob_init_conflict'); - - php_strtoupper := GetProcAddress(PHPLib, 'php_strtoupper'); - - php_strtolower := GetProcAddress(PHPLib, 'php_strtolower'); + LFunc(@php_strtolower,'php_strtolower'); - php_strtr := GetProcAddress(PHPLib, 'php_strtr'); + LFunc(@php_strtr, 'php_strtr'); - php_stripcslashes := GetProcAddress(PHPLib, 'php_stripcslashes'); + LFunc(@php_stripcslashes, 'php_stripcslashes'); - php_basename := GetProcAddress(PHPLib, 'php_basename'); + LFunc(@php_basename, 'php_basename'); - php_dirname := GetProcAddress(PHPLib, 'php_dirname'); + LFunc(@php_dirname, 'php_dirname'); - php_stristr := GetProcAddress(PHPLib, 'php_stristr'); + LFunc(@php_stristr, 'php_stristr'); - php_str_to_str := GetProcAddress(PHPLib, 'php_str_to_str'); + LFunc(@php_str_to_str, 'php_str_to_str'); - php_strip_tags := GetProcAddress(PHPLib, 'php_strip_tags'); + LFunc(@php_strip_tags, 'php_strip_tags'); - php_implode := GetProcAddress(PHPLib, 'php_implode'); + LFunc(@php_implode, 'php_implode'); - php_explode := GetProcAddress(PHPLib, 'php_explode'); + LFunc(@php_explode, 'php_explode'); - php_info_html_esc := GetProcAddress(PHPLib, 'php_info_html_esc'); + LFunc(@php_info_html_esc, 'php_info_html_esc'); - php_print_info_htmlhead := GetProcAddress(PHPLib, 'php_print_info_htmlhead'); + LFunc(@php_print_info_htmlhead, 'php_print_info_htmlhead'); - php_print_info := GetProcAddress(PHPLib, 'php_print_info'); + LFunc(@php_print_info, 'php_print_info'); - php_info_print_table_colspan_header := GetProcAddress(PHPLib, 'php_info_print_table_colspan_header'); + LFunc(@php_info_print_table_colspan_header, 'php_info_print_table_colspan_header'); - php_info_print_box_start := GetProcAddress(PHPLib, 'php_info_print_box_start'); + LFunc(@php_info_print_box_start, 'php_info_print_box_start'); - php_info_print_box_end := GetProcAddress(PHPLib, 'php_info_print_box_end'); + LFunc(@php_info_print_box_end, 'php_info_print_box_end'); - php_info_print_hr := GetProcAddress(PHPLib, 'php_info_print_hr'); + LFunc(@php_info_print_hr, 'php_info_print_hr'); - php_info_print_table_start := GetProcAddress(PHPLib, 'php_info_print_table_start'); + LFunc(@php_info_print_table_start, 'php_info_print_table_start'); - php_info_print_table_row1 := GetProcAddress(PHPLib, 'php_info_print_table_row'); + LFunc(@php_info_print_table_row1, 'php_info_print_table_row'); - php_info_print_table_row2 := GetProcAddress(PHPLib, 'php_info_print_table_row'); + LFunc(@php_info_print_table_row2, 'php_info_print_table_row'); - php_info_print_table_row3 := GetProcAddress(PHPLib, 'php_info_print_table_row'); + LFunc(@php_info_print_table_row3, 'php_info_print_table_row'); - php_info_print_table_row4 := GetProcAddress(PHPLib, 'php_info_print_table_row'); + LFunc(@php_info_print_table_row4, 'php_info_print_table_row'); - php_info_print_table_row := GetProcAddress(PHPLib, 'php_info_print_table_row'); + LFunc(@php_info_print_table_row, 'php_info_print_table_row'); - php_info_print_table_end := GetProcAddress(PHPLib, 'php_info_print_table_end'); - - php_body_write := GetProcAddress(PHPLib, 'php_body_write'); - - php_header_write := GetProcAddress(PHPLib, 'php_header_write'); - {$IFNDEF P_CUT} - php_log_err := GetProcAddress(PHPLib, 'php_log_err'); + LFunc(@php_info_print_table_end, 'php_info_print_table_end'); + {$IF Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} + LFunc(@php_write, 'php_write' ); + {$ELSE} + LFunc(@php_body_write, 'php_body_write' ); + LFunc(@php_header_write, 'php_header_write'); {$ENDIF} - php_html_puts := GetProcAddress(PHPLib, 'php_html_puts'); - - _php_error_log := GetProcAddress(PHPLib, '_php_error_log'); - - php_print_credits := GetProcAddress(PHPLib, 'php_print_credits'); + {$IFNDEF CUTTED_PHP7dll} + LFunc(@php_log_err, 'php_log_err'); + {$ENDIF} + LFunc(@php_html_puts, 'php_html_puts'); - php_info_print_css := GetProcAddress(PHPLib, 'php_info_print_css'); + LFunc(@_php_error_log, '_php_error_log'); - php_set_sock_blocking := GetProcAddress(PHPLib, 'php_set_sock_blocking'); + LFunc(@php_print_credits, 'php_print_credits'); - php_copy_file := GetProcAddress(PHPLib, 'php_copy_file'); + LFunc(@php_info_print_css, 'php_info_print_css'); - {$IFDEF PHP4} - php_flock := GetProcAddress(PHPLib, 'php_flock'); - php_lookup_hostname := GetProcAddress(PHPLib, 'php_lookup_hostname'); - {$ENDIF} + LFunc(@php_set_sock_blocking, 'php_set_sock_blocking'); + LFunc(@php_copy_file, 'php_copy_file'); - php_header := GetProcAddress(PHPLib, 'php_header'); + LFunc(@php_header, 'php_header'); - php_setcookie := GetProcAddress(PHPLib, 'php_setcookie'); + LFunc(@php_setcookie, 'php_setcookie'); - php_escape_html_entities := GetProcAddress(PHPLib, 'php_escape_html_entities'); + LFunc(@php_escape_html_entities, 'php_escape_html_entities'); - php_ini_long := GetProcAddress(PHPLib, 'zend_ini_long'); + LFunc(@php_ini_long, 'zend_ini_long'); - php_ini_double := GetProcAddress(PHPLib, 'zend_ini_double'); + LFunc(@php_ini_double, 'zend_ini_double'); - php_ini_string := GetProcAddress(PHPLib, 'zend_ini_string'); + LFunc(@php_ini_string, 'zend_ini_string'); - php_url_free := GetProcAddress(PHPLib, 'php_url_free'); + LFunc(@php_url_free, 'php_url_free'); - php_url_parse := GetProcAddress(PHPLib, 'php_url_parse'); + LFunc(@php_url_parse, 'php_url_parse'); - php_url_decode := GetProcAddress(PHPLib, 'php_url_decode'); + LFunc(@php_url_decode, 'php_url_decode'); - php_raw_url_decode := GetProcAddress(PHPLib, 'php_raw_url_decode'); + LFunc(@php_raw_url_decode, 'php_raw_url_decode'); - php_url_encode := GetProcAddress(PHPLib, 'php_url_encode'); + LFunc(@php_url_encode, 'php_url_encode'); - php_raw_url_encode := GetProcAddress(PHPLib, 'php_raw_url_encode'); + LFunc(@php_raw_url_encode, 'php_raw_url_encode'); {$IFDEF PHP5} - php_register_extensions := GetProcAddress(PHPLib, 'php_register_extensions'); + LFunc(@php_register_extensions, 'php_register_extensions'); {$ELSE} - php_startup_extensions := GetProcAddress(PHPLib, 'php_startup_extensions'); + LFunc(@php_startup_extensions, 'php_startup_extensions'); {$ENDIF} - php_error_docref0 := GetProcAddress(PHPLib, 'php_error_docref0'); - - php_error_docref := GetProcAddress(PHPLib, 'php_error_docref0'); - - php_error_docref1 := GetProcAddress(PHPLib, 'php_error_docref1'); + LFunc(@php_error_docref0, 'php_error_docref0'); - php_error_docref2 := GetProcAddress(PHPLib, 'php_error_docref2'); + LFunc(@php_error_docref, 'php_error_docref0'); + LFunc(@php_error_docref1, 'php_error_docref1'); - - {$IFNDEF QUIET_LOAD} - CheckPHPErrors; - {$ENDIF} + LFunc(@php_error_docref2, 'php_error_docref2'); Result := true; end; - - -{$IFNDEF QUIET_LOAD} -procedure CheckPHPErrors; -begin - if @sapi_add_header_ex = nil then raise EPHP4DelphiException.Create('sapi_add_header_ex'); - if @php_request_startup = nil then raise EPHP4DelphiException.Create('php_request_startup'); - if @php_request_shutdown = nil then raise EPHP4DelphiException.Create('php_request_shutdown'); - if @php_module_startup = nil then raise EPHP4DelphiException.Create('php_module_startup'); - if @php_module_shutdown = nil then raise EPHP4DelphiException.Create('php_module_shutdown'); - if @php_module_shutdown_wrapper = nil then raise EPHP4DelphiException.Create('php_module_shutdown_wrapper'); - if @sapi_startup = nil then raise EPHP4DelphiException.Create('sapi_startup'); - if @sapi_shutdown = nil then raise EPHP4DelphiException.Create('sapi_shutdown'); - if @sapi_activate = nil then raise EPHP4DelphiException.Create('sapi_activate'); - if @sapi_deactivate = nil then raise EPHP4DelphiException.Create('sapi_deactivate'); - if @php_execute_script = nil then raise EPHP4DelphiException.Create('php_execute_script'); - if @php_handle_aborted_connection = nil then raise EPHP4DelphiException.Create('php_handle_aborted_connection'); - if @php_register_variable = nil then raise EPHP4DelphiException.Create('php_register_variable'); - if @php_register_variable_safe = nil then raise EPHP4DelphiException.Create('php_register_variable_safe'); - if @php_register_variable_ex = nil then raise EPHP4DelphiException.Create('php_register_variable_ex'); - if @php_strip_tags = nil then raise EPHP4DelphiException.Create('php_strip_tags'); - {$IFNDEF P_CUT} - if @php_log_err = nil then raise EPHP4DelphiException.Create('php_log_err'); - {$ENDIF} - if @php_html_puts = nil then raise EPHP4DelphiException.Create('php_html_puts'); - if @_php_error_log = nil then raise EPHP4DelphiException.Create('_php_error_log'); - if @php_print_credits = nil then raise EPHP4DelphiException.Create('php_print_credits'); - if @php_info_print_css = nil then raise EPHP4DelphiException.Create('php_info_print_css'); - if @php_set_sock_blocking = nil then raise EPHP4DelphiException.Create('php_set_sock_blocking'); - if @php_copy_file = nil then raise EPHP4DelphiException.Create('php_copy_file'); - - if @php_ini_long = nil then raise EPHP4DelphiException.Create('php_ini_long'); - if @php_ini_double = nil then raise EPHP4DelphiException.Create('php_ini_double'); - if @php_ini_string = nil then raise EPHP4DelphiException.Create('php_ini_string'); - if @php_url_free = nil then raise EPHP4DelphiException.Create('php_url_free'); - if @php_url_parse = nil then raise EPHP4DelphiException.Create('php_url_parse'); - if @php_url_decode = nil then raise EPHP4DelphiException.Create('php_url_decode'); - if @php_raw_url_decode = nil then raise EPHP4DelphiException.Create('php_raw_url_decode'); - if @php_url_encode = nil then raise EPHP4DelphiException.Create('php_url_encode'); - if @php_raw_url_encode = nil then raise EPHP4DelphiException.Create('php_raw_url_encode'); - - {$IFDEF PHP5} - if @php_register_extensions = nil then raise EPHP4DelphiException.Create('php_register_extensions'); - {$ELSE} - if @php_startup_extensions = nil then raise EPHP4DelphiException.Create('php_startup_extensions'); - {$ENDIF} - - if @php_error_docref0 = nil then raise EPHP4DelphiException.Create('php_error_docref0'); - if @php_error_docref = nil then raise EPHP4DelphiException.Create('php_error_docref'); - if @php_error_docref1 = nil then raise EPHP4DelphiException.Create('php_error_docref1'); - if @php_error_docref2 = nil then raise EPHP4DelphiException.Create('php_error_docref2'); -end; -{$ENDIF} - function GetPostVariables: pzval; -var - TSRMLS_D : pointer; - CoreGlobals : Pphp_Core_Globals; begin - TSRMLS_D := ts_resource_ex(0, nil); - CoreGlobals := PG(TSRMLS_D); - Result := CoreGlobals^.http_globals[0]; + Result := GetPHPGlobals(ts_resource_ex(0, nil))^.http_globals[0]; end; function GetGetVariables : pzval; -var - TSRMLS_D : pointer; - CoreGlobals : Pphp_Core_Globals; begin - TSRMLS_D := ts_resource_ex(0, nil); - CoreGlobals := PG(TSRMLS_D); - Result := CoreGlobals^.http_globals[1]; + Result := GetPHPGlobals(ts_resource_ex(0, nil))^.http_globals[1]; end; function GetServerVariables : pzval; -var - TSRMLS_D : pointer; - CoreGlobals : Pphp_Core_Globals; begin - TSRMLS_D := ts_resource_ex(0, nil); - CoreGlobals := PG(TSRMLS_D); - Result := CoreGlobals^.http_globals[3]; + Result := GetPHPGlobals(ts_resource_ex(0, nil))^.http_globals[3]; end; function GetEnvVariables : pzval; -var - TSRMLS_D : pointer; - CoreGlobals : Pphp_Core_Globals; begin - TSRMLS_D := ts_resource_ex(0, nil); - CoreGlobals := PG(TSRMLS_D); - Result := CoreGlobals^.http_globals[4]; + Result := GetPHPGlobals(ts_resource_ex(0, nil))^.http_globals[4]; end; function GetFilesVariables : pzval; -var - TSRMLS_D : pointer; - CoreGlobals : Pphp_Core_Globals; begin - TSRMLS_D := ts_resource_ex(0, nil); - CoreGlobals := PG(TSRMLS_D); - Result := CoreGlobals^.http_globals[5]; + Result := GetPHPGlobals(ts_resource_ex(0, nil))^.http_globals[5]; end; function FloatToValue(Value: Extended): zend_ustr; var - {$IFDEF VERSION12} - c: WideChar; - {$ELSE} - c: AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try @@ -872,11 +684,7 @@ function FloatToValue(Value: Extended): zend_ustr; function ValueToFloat(Value : zend_ustr) : extended; var - {$IFDEF VERSION12} - c: WideChar; - {$ELSE} - c : AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try diff --git a/Source/PHPCommon.pas b/Source/PHPCommon.pas index d594f7c..04369c1 100644 --- a/Source/PHPCommon.pas +++ b/Source/PHPCommon.pas @@ -272,11 +272,7 @@ function TPHPVariable.GetAsFloat: double; function TPHPVariable.GetAsInteger: integer; var - {$IFDEF VERSION12} - c : WideChar; - {$ELSE} - c : AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try @@ -310,11 +306,7 @@ procedure TPHPVariable.SetAsFloat(const Value: double); procedure TPHPVariable.SetAsInteger(const Value: integer); var - {$IFDEF VERSION12} - c : WideChar; - {$ELSE} - c : AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index 8875c7f..80ceda8 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -168,7 +168,9 @@ function ZendTypeToString(_type : integer) : string; IS_BOOL : Result := 'IS_BOOL'; IS_RESOURCE : Result := 'IS_RESOURCE'; IS_CONSTANT : Result := 'IS_CONSTANT'; + {$IFNDEF PHP7} IS_CONSTANT_ARRAY : Result := 'IS_CONSTANT_ARRAY'; + {$ENDIF} end; end; @@ -389,7 +391,7 @@ procedure TFunctionParams.SetItem(Index: Integer; Value: TFunctionParam); procedure TFunctionParams.SetItemName(Item: TCollectionItem); var - I, J: Integer; + J: Integer; CurItem: TFunctionParam; begin J := 1; diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 3d00f20..9fa22fe 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -18,13 +18,8 @@ interface uses {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7} hzend_types {$ELSE} ZendTypes {$ENDIF}; -{$IFDEF PHP4} const - phpVersion = 4; -{$ELSE} -const - phpVersion = 5; -{$ENDIF} + phpVersion = {$IFDEF PHP7}7{$ELSE}5{$ENDIF}; const TRequestName : array [0..3] of zend_ustr = diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index accf608..7417590 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -20,6 +20,7 @@ interface uses +VCL.Dialogs, {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, SysUtils, {$IFDEF PHP7} hzend_types, {$ElSE} ZendTypes, {$ENDIF} Variants, PHPTypes; @@ -79,7 +80,15 @@ align_test = record {$IFNDEF PHP_UNICE} function AnsiFormat(const Format: AnsiString; const Args: array of const): AnsiString; {$ENDIF} +function Lfunc(var Func: Pointer; addr: LPCWSTR): Bool; function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; +function __asm_fetchval +{$IFDEF CPUX64} +(val_id: int64; tsrmls_dc_p: pointer) +{$ELSE} +(val_id: integer; tsrmls_dc_p: pointer) +{$ENDIF} +: pointer; procedure UnloadZEND; function ZENDLoaded: boolean; @@ -138,14 +147,7 @@ function STR_EMPTY_ALLOC : zend_pchar; zend_disable_function : function(function_name : zend_pchar; function_name_length : uint; TSRMLS_DC : pointer) : integer; cdecl; zend_disable_class : function(class_name : zend_pchar; class_name_length : uint; TSRMLS_DC : pointer) : integer; cdecl; - -{$IFDEF PHP4} - zend_hash_add_or_update : function(ht: PHashTable; arKey: zend_pchar; - nKeyLength: uint; pData: Pointer; nDataSize: uint; pDest: Pointer; - flag: Integer): Integer; cdecl; -{$ELSE} {$IFNDEF PHP7} -var _zend_hash_add_or_update : function (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDes : pointer; flag : integer; __zend_filename: zend_pchar; __zend_lineno: uint) : integer; cdecl; @@ -154,33 +156,10 @@ function STR_EMPTY_ALLOC : zend_pchar; nKeyLength : uint; pData : {$IFDEF PHP7}pzval{$ELSE}pointer{$ENDIF}; nDataSize : uint; pDes : pointer; flag : integer) : integer; cdecl; -{$ENDIF} function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey : zend_pchar; nKeyLength : uint; pData : pointer; nDataSize : uint; pDest : pointer) : integer; cdecl; var - {$IFDEF PHP4} - zend_hash_init : function(ht: PHashTable; nSize: uint; - pHashFunction: pointer; pDestructor: pointer; - persistent: Integer): Integer; cdecl; - - zend_hash_init_ex : function(ht: PHashTable; nSize: uint; - pHashFunction: pointer; pDestructor: pointer; - persistent: Integer; bApplyProtection: boolean): Integer; cdecl; - - - zend_hash_quick_add_or_update : function(ht: PHashTable; arKey: zend_pchar; - nKeyLength: uint; h: ulong; pData: Pointer; nDataSize: uint; - pDest: Pointer; flag: Integer): Integer; cdecl; - - zend_hash_index_update_or_next_insert : function(ht: PHashTable; h: ulong; - pData: Pointer; nDataSize: uint; pDest: Pointer; flag: Integer): Integer; cdecl; - - zend_hash_merge : procedure(target: PHashTable; source: PHashTable; - pCopyConstructor: pointer; tmp: Pointer; size: uint; overwrite: Integer); cdecl; - - {$ELSE} - _zend_hash_init : function (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent: zend_bool; __zend_filename: zend_pchar; __zend_lineno: uint) : integer; cdecl; @@ -193,8 +172,6 @@ function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; a function zend_hash_init_ex (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; nSize : uint; pHashFunction : pointer; pDestructor : pointer; persistent : zend_bool; bApplyProtection : zend_bool): integer; cdecl; - -{$ENDIF} {$IFDEF PHP7} function zend_hash_num_elements(ht: Pzend_array): integer; function add_char_to_string (_result: Pzval; op1: Pzval; op2: Pzval): Integer; @@ -313,25 +290,31 @@ function zend_hash_add(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; a function zend_hash_get_current_data(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; pData: Pointer): Integer; cdecl; procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}); cdecl; - +// zend_constants.h var zend_get_constant : function(name: zend_pchar; name_len: uint; var result: zval; - TSRMLS_DC: Pointer): Integer; cdecl; + TSRMLS_DC: Pointer): IntPtr; cdecl; + + zend_register_null_constant : procedure(name: zend_pchar; name_len: uint; + flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + + zend_register_bool_constant : procedure(name: zend_pchar; name_len: uint; + bval: zend_bool; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; zend_register_long_constant : procedure(name: zend_pchar; name_len: uint; - lval: Longint; flags: Integer; module_number: Integer; TSRMLS_DC: Pointer); cdecl; + lval: Longint; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; - zend_register_double_constant : procedure(name: zend_pchar; name_len: uint; dval: Double; flags: Integer; module_number: Integer; - TSRMLS_DC: Pointer); cdecl; + zend_register_double_constant : procedure(name: zend_pchar; name_len: uint; + dval: Double; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; - zend_register_string_constant : procedure(name: zend_pchar; name_len: uint; strval: zend_pchar; flags: Integer; module_number: Integer; - TSRMLS_DC: Pointer); cdecl; + zend_register_string_constant : procedure(name: zend_pchar; name_len: uint; + strval: zend_pchar; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; zend_register_stringl_constant : procedure(name: zend_pchar; name_len: uint; - strval: zend_pchar; strlen: uint; flags: Integer; module_number: Integer; + strval: zend_pchar; strlen: uint; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; - zend_register_constant : function(var c: zend_constant; TSRMLS_DC: Pointer): Integer; cdecl; + zend_register_constant : function(var c: zend_constant; TSRMLS_DC: Pointer): IntPtr; cdecl; zend_register_auto_global : {$IFDEF PHP700} @@ -358,26 +341,21 @@ procedure REGISTER_MAIN_STRINGL_CONSTANT(name: zend_pchar; str: zend_pchar; len: // deallocates all occurrences of a given id ts_free_id : procedure(id: ts_rsrc_id); cdecl; - tsrm_shutdown : procedure(); cdecl; + tsrm_shutdown : procedure; cdecl; ts_resource_ex : function(id: integer; p: pointer): pointer; cdecl; ts_free_thread : procedure; cdecl; zend_error : procedure(ErrType: integer; ErrText: zend_pchar); cdecl; zend_error_cb : procedure; cdecl; - zend_eval_string : function(str: zend_pchar; val: pointer; strname: zend_pchar; tsrm: pointer): integer; cdecl; + zend_eval_string : function(str: zend_pchar; ret_val: pointer; strname: zend_pchar; tsrm: pointer): integer; cdecl; + zend_eval_string_ex : function(str:PAnsiChar; retval_ptr:pzval; string_name:PAnsiChar; handle_exceptions:longint):longint; cdecl; zend_make_compiled_string_description : function(a: zend_pchar; tsrm: pointer): zend_pchar; cdecl; - - {$IFDEF PHP4} - _zval_copy_ctor : function(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint): integer; cdecl; - _zval_dtor : procedure(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; - {$ELSE} _zval_copy_ctor_func : procedure(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; _zval_dtor_func : procedure(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; _zval_ptr_dtor: procedure(val: ppzval; __zend_filename: zend_pchar); cdecl; procedure _zval_copy_ctor (val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; procedure _zval_dtor(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; - {$ENDIF} var zend_print_variable : function(val: pzval): integer; cdecl; @@ -386,11 +364,6 @@ procedure REGISTER_MAIN_STRINGL_CONSTANT(name: zend_pchar; str: zend_pchar; len: zend_get_compiled_filename : function(TSRMLS_DC: Pointer): zend_pchar; cdecl; zend_get_compiled_lineno : function(TSRMLS_DC: Pointer): integer; cdecl; - -{$IFDEF PHP4} -function zval_copy_ctor(val : pzval) : integer; -{$ENDIF} - function ts_resource(id : integer) : pointer; function tsrmls_fetch : pointer; @@ -556,17 +529,17 @@ procedure convert_to_string(op: pzval); zend_html_putc : procedure(c: zend_uchar); cdecl; zend_html_puts : procedure(s: zend_pchar; len: uint; TSRMLS_DC: Pointer); cdecl; + + zend_parse_method_parameters:function(num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:PAnsiChar):longint; cdecl varargs; + + zend_parse_method_parameters_ex:function(flags:longint; num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:PAnsiChar):longint; cdecl varargs; + {$IFDEF PHP7} zend_parse_parameters_throw : function(num_args:longint; type_spec:PAnsiChar):longint; cdecl varargs; {$ELSE} zend_indent : procedure; cdecl; {$ENDIF} - ZendGetParameters : - {$IFDEF PHP7} - function(ht:longint; param_count:longint):longint; cdecl varargs; - {$ELSE} - function: integer; cdecl; - {$ENDIF} + Zend_Get_Parameters : function(ht:longint; param_count:longint):longint; cdecl varargs; zend_get_params_ex : {$IFDEF PHP7} function(param_count:longint):longint; cdecl varargs; @@ -577,15 +550,11 @@ procedure convert_to_string(op: pzval); ZvalGetArgs: function(Count: Integer; Args: ppzval): Integer;cdecl varargs; _zend_get_parameters_array_ex:function(param_count:longint; argument_array:Pzval):longint; cdecl; {$ELSE} + _zend_get_parameters_array: function(ht: integer; param_count:longint; argument_array: ppzval; TSRMLS_DC: pointer): integer; cdecl; _zend_get_parameters_array_ex : function(param_count: integer; argument_array: pppzval; TSRMLS_CC: pointer): integer; cdecl; {$ENDIF} -function zend_get_parameters_ex(number: integer; var Params: pzval_array): integer; function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; -{$IFNDEF PHP7} -function zend_get_parameters(ht: integer; param_count: integer; Params: array of -ppzval): integer; -{$ENDIF} procedure dispose_pzval_array(Params: pzval_array); @@ -614,21 +583,8 @@ procedure dispose_pzval_array(Params: pzval_array); zend_wrong_param_count : procedure(TSRMLS_D: pointer); cdecl; _zend_hash_quick_add_or_update:function(ht: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; arKey: zend_pchar; nKeyLength: uint; h: uint; out pData: pzval; nDataSize: uint; pDest: PPointer; flag: Integer) : Integer; cdecl; - {$IFDEF PHP4} - add_property_long_ex : function(arg: pzval; key: zend_pchar; key_len: uint; l: longint): integer; cdecl; - {$ELSE} add_property_long_ex : function(arg: pzval; key: zend_pchar; key_len: uint; l: longint; TSRMLS_DC : pointer): integer; cdecl; - {$ENDIF} - {$IFDEF PHP4} - add_property_null_ex : function(arg: pzval; key: zend_pchar; key_len: uint): integer; cdecl; - add_property_bool_ex : function(arg: pzval; key: zend_pchar; key_len: uint; b: integer): integer; cdecl; - add_property_resource_ex : function(arg: pzval; key: zend_pchar; key_len: uint; r: integer): integer; cdecl; - add_property_double_ex : function(arg: pzval; key: zend_pchar; key_len: uint; d: double): integer; cdecl; - add_property_string_ex : function(arg: pzval; key: zend_pchar; key_len: uint; str: zend_pchar; duplicate: integer): integer; cdecl; - add_property_stringl_ex : function(arg: pzval; key: zend_pchar; key_len: uint; str: zend_pchar; len: uint; duplicate: integer): integer; cdecl; - add_property_zval_ex : function(arg: pzval; key: zend_pchar; key_len: uint; value: pzval): integer; cdecl; - {$ELSE} add_property_null_ex : function(arg: pzval; key: zend_pchar; key_len: uint; TSRMLS_DC: Pointer): integer; cdecl; add_property_bool_ex : function(arg: pzval; key: zend_pchar; key_len: uint; b: integer; TSRMLS_DC: Pointer): integer; cdecl; add_property_resource_ex : function(arg: pzval; key: zend_pchar; key_len: uint; r: integer; TSRMLS_DC: Pointer): integer; cdecl; @@ -636,9 +592,8 @@ procedure dispose_pzval_array(Params: pzval_array); add_property_string_ex : function(arg: pzval; key: zend_pchar; key_len: uint; str: zend_pchar; duplicate: integer; TSRMLS_DC: Pointer): integer; cdecl; add_property_stringl_ex : function(arg: pzval; key: zend_pchar; key_len: uint; str: zend_pchar; len: uint; duplicate: integer; TSRMLS_DC: Pointer): integer; cdecl; add_property_zval_ex : function(arg: pzval; key: zend_pchar; key_len: uint; value: pzval; TSRMLS_DC: Pointer): integer; cdecl; - {$ENDIF} - {$IFDEF P_CUT} + {$IFDEF CUTTED_PHP7dll} call_user_function : procedure(func:pzval; argv:pzval; argc:integer);cdecl; {$ELSE} call_user_function : function(function_table: PHashTable; object_pp: pzval; @@ -651,17 +606,6 @@ procedure dispose_pzval_array(Params: pzval_array); no_separation: zend_uint; symbol_table: PHashTable; TSRMLS_DC: Pointer): integer; cdecl; {$ENDIF} - { -call_user_function_ex(HashTable *function_table, - zval **object_pp, - zval *function_name, - zval **retval_ptr_ptr, - zend_uint param_count, - zval **params[], - int no_separation, - HashTable *symbol_table - TSRMLS_DC); -} add_assoc_long_ex : function(arg: pzval; key: zend_pchar; key_len: uint; n: longint): integer; cdecl; @@ -701,17 +645,9 @@ procedure dispose_pzval_array(Params: pzval_array); _array_init : function(arg: pzval; __zend_filename: zend_pchar; __zend_lineno: uint): integer; cdecl; - {$IFDEF PHP4} - _object_init : function(arg: pzval; __zend_filename: zend_pchar; __zend_lineno: uint; TSRMLS_DC: pointer): integer; cdecl; - {$ELSE} _object_init : function(arg: pzval;TSRMLS_DC: pointer): integer; cdecl; - {$ENDIF} - {$IFDEF PHP4} - _object_init_ex : function (arg: pzval; ce: pzend_class_entry; __zend_filename: zend_pchar; __zend_lineno: uint; TSRMLS_DC: pointer) : integer; cdecl; - {$ELSE} _object_init_ex : function (arg: pzval; ce: pzend_class_entry; __zend_lineno : integer; TSRMLS_DC : pointer) : integer; cdecl; - {$ENDIF} _object_and_properties_init : function(arg: pzval; ce: pointer; properties: phashtable; __zend_filename: zend_pchar; __zend_lineno: uint; TSRMLS_DC: pointer): integer; cdecl; @@ -823,7 +759,11 @@ procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: {$IFDEF PHP7}HashTable{$ELSE}pointer{$ENDIF}); - +procedure zend_copy_constant(c: zend_constant); +{$IF defined(PHP540) or defined(PHP550) or defined(PHP560)} +procedure zend_copy_constants(target: PHashTable; source: PHashTable); cdecl; +procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; +{$ENDIF} var get_zend_version : function(): zend_pchar; cdecl; @@ -833,33 +773,26 @@ procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: z zend_output_debug_string : procedure(trigger_break: boolean; Msg: zend_pchar); cdecl; {$IFDEF PHP5} + {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_copy_constants: procedure(target: PHashTable; source: PHashTable); cdecl; + {$ENDIF} zend_objects_new : function (_object : pointer; class_type : pointer; TSRMLS_DC : pointer) : {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; zend_objects_clone_obj: function(_object: pzval; TSRMLS_DC : pointer): {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; zend_objects_store_add_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; zend_objects_store_del_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; function_add_ref: procedure (func: {$IFDEF PHP7}Pzend_function{$ELSE}PZendFunction{$ENDIF}); cdecl; - + {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_class_add_ref: procedure(aclass: Ppzend_class_entry); cdecl; - + {$ENDIF} {$ENDIF} - +{$IFNDEF COMPILER_VC9} const MSCRT = 'msvcrt.dll'; //Microsoft C++ functions - -{$IFDEF PHP4} -function pipe(phandles : pointer; psize : uint; textmode : integer) : integer; cdecl; external MSCRT name '_pipe'; -procedure close(AHandle : THandle); cdecl; external MSCRT name '_close'; -function _write(AHandle : integer; ABuffer : pointer; count : uint) : integer; cdecl; external MSCRT name '_write'; -function setjmp(buf : jump_buf) : integer; cdecl; external MSCRT name '_setjmp3'; -{$ENDIF} - -{$IFNDEF COMPILER_VC9} function strdup(strSource : zend_pchar) : zend_pchar; cdecl; external MSCRT name '_strdup'; {$ELSE} function DupStr(strSource : zend_pchar) : zend_pchar; cdecl; @@ -872,9 +805,6 @@ procedure ALLOC_ZVAL(out Result: pzval); overload; procedure INIT_PZVAL(p: pzval); function MAKE_STD_ZVAL: pzval; overload; procedure MAKE_STD_ZVAL(out Result: pzval); overload; -{$IFNDEF QUIET_LOAD} -procedure CheckZendErrors; -{$ENDIF} var PHPLib : THandle = 0; @@ -899,18 +829,22 @@ function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entr zend_is_true : function(z : pzval) : integer; cdecl; function object_init(arg: pzval; ce: pzend_class_entry; TSRMLS_DC : pointer) : integer; cdecl; assembler; - function Z_LVAL(z : Pzval) : longint; function Z_BVAL(z : Pzval) : boolean; function Z_DVAL(z : Pzval) : double; function Z_STRVAL(z : Pzval) : zend_ustr; function Z_STRUVAL(z : PZval): UTF8String; function Z_STRWVAL(z : pzval) : String; +function Z_CHAR(z: PZval) : zend_uchar; +function Z_WCHAR(z: PZval) : WideChar; +function Z_ACHAR(z: PZVAL): AnsiChar; +function Z_UCHAR(z: PZVAL): UTF8Char; + function Z_STRLEN(z : Pzval) : longint; function Z_ARRVAL(z : Pzval ) : PHashTable; function Z_OBJ_HANDLE(z :Pzval) : {$IFDEF PHP7} P_zend_object_handlers {$ELSE} zend_object_handle{$ENDIF}; function Z_OBJ_HT(z : Pzval) : {$IFDEF PHP7}P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; -function Z_OBJPROP(z : Pzval) : PHashTable; +function Z_OBJPROP(z : Pzval;TSRMLS_DC:pointer=nil) : PHashTable; function Z_VARREC(z: pzval): TVarRec; procedure zend_addref_p(z: pzval); cdecl; @@ -1580,7 +1514,7 @@ function toWChar(s: zend_pchar): PWideChar; function HashToVarArray(const Value:{$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}): Variant; Var Len,I: Integer; - tmp : pppzval; + {$IFDEF PHP7}tmp : pzval;{$ELSE}tmp : pppzval;{$ENDIF} begin len := zend_hash_num_elements(Value); Result := VarArrayCreate([0, len - 1], varVariant); @@ -1611,21 +1545,30 @@ function ZendToVariant(const Value: pzval; S: String; begin case {$IFDEF PHP7} Value^.u1.v._type {$ELSE}Value^._type{$ENDIF} of - 0: Result := Null; - 1: Result := Value^.value.lval; - 2: Result := Value^.value.dval; - 3: Result := boolean(Value^.value.lval); - 4: Result := HashToVarArray(Value^.value.ht); - 5: + 0: Result := Null; //Null + 1: Result := Value^.value.lval; //LongInt -> Integer + 2: Result := Value^.value.dval; //Double + 3: Result := boolean(Value^.value.lval); //Boolean + {$IFDEF PHP7} + 4: Result := HashToVarArray(Value^.value.arr);//Array + {$ELSE} + 4: Result := HashToVarArray(Value^.value.ht);//Array + {$ENDIF} + 5: //Object if Assigned(cobj) then Result := cobj(Value) else - Result := Null; - 7: Result := Value^.value.lval; + Result := Null; //String 6: begin S := Value^.value.str.val; Result := S; end; + 7: Result := Value^.value.lval; //Resource + //Constant 8: begin S := Value^.value.str.val; Result := S; end; - 9: Result := HashToVarArray(Value^.value.ht) - else Result := Null; + {$IFDEF PHP7} + 9: Result := HashToVarArray(Value^.value.arr) //Constant Array + {$ELSE} + 9: Result := HashToVarArray(Value^.value.ht) //Constant Array + {$ENDIF} + else Result := Null; //Unknown/undefined end; end; @@ -2255,15 +2198,46 @@ function ZENDLoaded: boolean; procedure UnloadZEND; var H : THandle; + t: Integer; begin - H := InterlockedExchange(Integer(PHPLib), 0); + t := Integer(PHPLib); + H := InterlockedExchange(t, 0); if H > 0 then begin FreeLibrary(H); end; end; +function Lfunc(var Func: Pointer; addr: LPCWSTR): BOOL; +begin + Result := True; + Func := GetProcAddress(PHPLib, addr); + if Func = nil then + begin + {$IFNDEF QUIET_LOAD} + raise EPHP4DelphiException.Create(addr); + {$ENDIF} + Result := False; + end; +end; +procedure zend_copy_constant(c: zend_constant); +begin + c.name := zend_strndup(c.name, c.name_len - 1); + if (c.flags and CONST_PERSISTENT) = 0 then + _zval_copy_ctor_func(@c.value, '', 0); +end; +{$IF defined(PHP540) or defined(PHP550) or defined(PHP560)} +procedure zend_copy_constants(target: PHashTable;source: PHashTable); +var tmp: zend_constant; +begin + zend_hash_copy(target, source, @zend_copy_constant, @tmp, sizeof(zend_constant)); +end; +procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; +begin + Inc(aclass^.refcount,1); +end; +{$ENDIF} function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; var WriteFuncPtr : pointer; @@ -2271,7 +2245,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$IFDEF QUIET_LOAD} Result := false; {$ENDIF} - PHPLib := {$IFDEF PHP_UNICE}LoadLibrary( PWideChar(WideString(DllFilename)) ){$ELSE}LoadLibraryA(zend_pchar(DllFileName)){$ENDIF}; + PHPLib := LoadLibrary( PWideChar(WideString(DllFilename)) ); {$IFNDEF QUIET_LOAD} if PHPLib = 0 then @@ -2284,53 +2258,57 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ENDIF} {$IFDEF PHP5} - zend_copy_constants := GetProcAddress(PHPLib, 'zend_copy_constants'); - zend_objects_new := GetProcAddress(PHPLib, 'zend_objects_new'); - zend_objects_clone_obj := GetProcAddress(PHPLib, 'zend_objects_clone_obj'); - function_add_ref := GetProcAddress(PHPLib, 'function_add_ref'); - zend_class_add_ref := GetProcAddress(PHPLib, 'zend_class_add_ref'); - - zend_objects_store_add_ref := GetProcAddress(PHPLib, 'zend_objects_store_add_ref'); - zend_objects_store_del_ref := GetProcAddress(PHPLib, 'zend_objects_store_del_ref'); - - zend_get_std_object_handlers := GetProcAddress(PHPLib, 'zend_get_std_object_handlers'); - zend_objects_get_address := GetProcAddress(PHPLib, 'zend_objects_get_address'); - zend_is_true := GetProcAddress(PHPLib, 'zend_is_true'); + {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + LFunc(@zend_copy_constants, 'zend_copy_constants'); + {$ENDIF} + LFunc(@zend_objects_new, 'zend_objects_new'); + LFunc(@zend_objects_clone_obj, 'zend_objects_clone_obj'); + LFunc(@function_add_ref, 'function_add_ref'); + {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + LFunc(@zend_class_add_ref, 'zend_class_add_ref'); + {$ENDIF} + + LFunc(@zend_objects_store_add_ref, 'zend_objects_store_add_ref'); + LFunc(@zend_objects_store_del_ref, 'zend_objects_store_del_ref'); + + LFunc(@zend_get_std_object_handlers, 'zend_get_std_object_handlers'); + LFunc(@zend_objects_get_address, 'zend_objects_get_address'); + LFunc(@zend_is_true, 'zend_is_true'); {$ENDIF} - _zend_bailout := GetProcAddress(PHPLib, '_zend_bailout'); + LFunc(@_zend_bailout, '_zend_bailout'); - zend_disable_function := GetProcAddress(PHPLib, 'zend_disable_function'); - zend_disable_class := GetProcAddress(PHPLib, 'zend_disable_class'); - zend_register_list_destructors_ex := GetProcAddress(PHPLib, 'zend_register_list_destructors_ex'); - zend_register_resource := GetProcAddress(PHPLib, 'zend_register_resource'); - zend_fetch_resource := GetProcAddress(PHPLib, 'zend_fetch_resource'); - zend_list_insert := GetProcAddress(PHPLib, 'zend_list_insert'); + LFunc(@zend_disable_function, 'zend_disable_function'); + LFunc(@zend_disable_class, 'zend_disable_class'); + LFunc(@zend_register_list_destructors_ex, 'zend_register_list_destructors_ex'); + LFunc(@zend_register_resource, 'zend_register_resource'); + LFunc(@zend_fetch_resource, 'zend_fetch_resource'); + LFunc(@zend_list_insert, 'zend_list_insert'); {$IFNDEF PHP7} - _zend_list_addref := GetProcAddress(PHPLib, '_zend_list_addref'); - _zend_list_delete := GetProcAddress(PHPLib, '_zend_list_delete'); - _zend_list_find := GetProcAddress(PHPLib, '_zend_list_find'); + LFunc(@_zend_list_addref, '_zend_list_addref'); + LFunc(@_zend_list_delete, '_zend_list_delete'); + LFunc(@_zend_list_find, '_zend_list_find'); {$ENDIF} - zend_rsrc_list_get_rsrc_type := GetProcAddress(PHPLib, 'zend_rsrc_list_get_rsrc_type'); - zend_fetch_list_dtor_id := GetProcAddress(PHPLib, 'zend_fetch_list_dtor_id'); + LFunc(@zend_rsrc_list_get_rsrc_type, 'zend_rsrc_list_get_rsrc_type'); + LFunc(@zend_fetch_list_dtor_id, 'zend_fetch_list_dtor_id'); - zend_get_compiled_filename := GetProcAddress(PHPLib, 'zend_get_compiled_filename'); + LFunc(@zend_get_compiled_filename, 'zend_get_compiled_filename'); - zend_get_compiled_lineno := GetProcAddress(PHPLib, 'zend_get_compiled_lineno'); + LFunc(@zend_get_compiled_lineno, 'zend_get_compiled_lineno'); - zend_ini_deactivate := GetProcAddress(PHPLib, 'zend_ini_deactivate'); + LFunc(@zend_ini_deactivate, 'zend_ini_deactivate'); // -- tsrm_startup - tsrm_startup := GetProcAddress(PHPLib, 'tsrm_startup'); + LFunc(@tsrm_startup, 'tsrm_startup'); // -- ts_allocate_id - ts_allocate_id := GetProcAddress(PHPLib, 'ts_allocate_id'); + LFunc(@ts_allocate_id, 'ts_allocate_id'); // -- ts_free_id - ts_free_id := GetProcAddress(PHPLib, 'ts_free_id'); + LFunc(@ts_free_id, 'ts_free_id'); // -- zend_strndup - zend_strndup := GetProcAddress(PHPLib, + LFunc(@zend_strndup, {$IFNDEF PHP7} 'zend_strndup' {$ELSE} @@ -2338,7 +2316,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ENDIF}); // -- _emalloc - _emalloc := GetProcAddress(PHPLib, + LFunc(@_emalloc, {$IFNDEF PHP7} '_emalloc' {$ELSE} @@ -2347,7 +2325,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- _efree - _efree := GetProcAddress(PHPLib, + LFunc(@_efree, {$IFNDEF PHP7} '_efree' {$ELSE} @@ -2356,7 +2334,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- _ecalloc - _ecalloc := GetProcAddress(PHPLib, + LFunc(@_ecalloc, {$IFNDEF PHP7} '_ecalloc' {$ELSE} @@ -2365,7 +2343,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- _erealloc - _erealloc := GetProcAddress(PHPLib, + LFunc(@_erealloc, {$IFNDEF PHP7} '_erealloc' {$else} @@ -2374,7 +2352,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- _estrdup - _estrdup := GetProcAddress(PHPLib, + LFunc(@_estrdup, {$IFNDEF PHP7} '_estrdup' {$ELSE} @@ -2382,7 +2360,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ENDIF}); // -- _estrndup - _estrndup := GetProcAddress(PHPLib, + LFunc(@_estrndup, {$IFNDEF PHP7} '_estrndup' {$ELSE} @@ -2390,7 +2368,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ENDIF}); // -- _estrndup Unicode - _estrndupu := GetProcAddress(PHPLib, + LFunc(@_estrndupu, {$IFNDEF PHP7} '_estrndup' {$ELSE} @@ -2398,657 +2376,634 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ENDIF}); // -- zend_set_memory_limit - zend_set_memory_limit := GetProcAddress(PHPLib, 'zend_set_memory_limit'); + LFunc(@zend_set_memory_limit, 'zend_set_memory_limit'); // -- start_memory_manager - start_memory_manager := GetProcAddress(PHPLib, 'start_memory_manager'); + LFunc(@start_memory_manager, 'start_memory_manager'); // -- shutdown_memory_manager - shutdown_memory_manager := GetProcAddress(PHPLib, 'shutdown_memory_manager'); - - {$IFDEF PHP4} - // -- zend_hash_init - zend_hash_init := GetProcAddress(PHPLib, 'zend_hash_init'); + LFunc(@shutdown_memory_manager, 'shutdown_memory_manager'); - // -- zend_hash_init_ex - zend_hash_init_ex := GetProcAddress(PHPLib, 'zend_hash_init_ex'); + LFunc(@_zend_hash_init, '_zend_hash_init'); + LFunc(@_zend_hash_init_ex, '_zend_hash_init_ex'); - // -- zend_hash_quick_add_or_update - zend_hash_quick_add_or_update := GetProcAddress(PHPLib, 'zend_hash_quick_add_or_update'); - - // -- zend_hash_index_update_or_next_insert - zend_hash_index_update_or_next_insert := GetProcAddress(PHPLib, 'zend_hash_index_update_or_next_insert'); - - // -- zend_hash_merge - zend_hash_merge := GetProcAddress(PHPLib, 'zend_hash_merge'); - {$ELSE} - _zend_hash_init := GetProcAddress(PHPLib, '_zend_hash_init'); - _zend_hash_init_ex := GetProcAddress(PHPLib, '_zend_hash_init_ex'); - - {$ENDIF} - - {$IFDEF PHP4} // -- zend_hash_add_or_update - zend_hash_add_or_update := GetProcAddress(PHPLib, 'zend_hash_add_or_update'); - {$ELSE} - // -- zend_hash_add_or_update - _zend_hash_add_or_update := GetProcAddress(PHPLib, + LFunc(@_zend_hash_add_or_update, {$IFDEF PHP7}'_zend_hash_add_or_update@@16'{$ELSE}'_zend_hash_add_or_update'{$ENDIF}); - {$ENDIF} // -- zend_hash_destroy - zend_hash_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_destroy@@4'{$ELSE}'zend_hash_destroy'{$ENDIF}); + LFunc(@zend_hash_destroy, {$IFDEF PHP7}'zend_hash_destroy@@4'{$ELSE}'zend_hash_destroy'{$ENDIF}); // -- zend_hash_clean - zend_hash_clean := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_clean@@4'{$ELSE}'zend_hash_clean'{$ENDIF}); + LFunc(@zend_hash_clean, {$IFDEF PHP7}'zend_hash_clean@@4'{$ELSE}'zend_hash_clean'{$ENDIF}); // -- zend_hash_add_empty_element - zend_hash_add_empty_element := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_add_empty_element@@8'{$ELSE}'zend_hash_add_empty_element'{$ENDIF}); + LFunc(@zend_hash_add_empty_element, {$IFDEF PHP7}'zend_hash_add_empty_element@@8'{$ELSE}'zend_hash_add_empty_element'{$ENDIF}); // -- zend_hash_graceful_destroy - zend_hash_graceful_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_graceful_destroy@@4'{$ELSE}'zend_hash_graceful_destroy'{$ENDIF}); + LFunc(@zend_hash_graceful_destroy, {$IFDEF PHP7}'zend_hash_graceful_destroy@@4'{$ELSE}'zend_hash_graceful_destroy'{$ENDIF}); // -- zend_hash_graceful_reverse_destroy - zend_hash_graceful_reverse_destroy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_graceful_reverse_destroy@@4'{$ELSE}'zend_hash_graceful_reverse_destroy'{$ENDIF}); + LFunc(@zend_hash_graceful_reverse_destroy, {$IFDEF PHP7}'zend_hash_graceful_reverse_destroy@@4'{$ELSE}'zend_hash_graceful_reverse_destroy'{$ENDIF}); // -- zend_hash_apply - zend_hash_apply := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_apply@@8'{$ELSE}'zend_hash_apply'{$ENDIF}); + LFunc(@zend_hash_apply, {$IFDEF PHP7}'zend_hash_apply@@8'{$ELSE}'zend_hash_apply'{$ENDIF}); // -- zend_hash_apply_with_argument - zend_hash_apply_with_argument := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_apply_with_argument@@12'{$ELSE}'zend_hash_apply_with_argument'{$ENDIF}); + LFunc(@zend_hash_apply_with_argument, {$IFDEF PHP7}'zend_hash_apply_with_argument@@12'{$ELSE}'zend_hash_apply_with_argument'{$ENDIF}); // -- zend_hash_reverse_apply - zend_hash_reverse_apply := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_reverse_apply@@8'{$ELSE}'zend_hash_reverse_apply'{$ENDIF}); + LFunc(@zend_hash_reverse_apply, {$IFDEF PHP7}'zend_hash_reverse_apply@@8'{$ELSE}'zend_hash_reverse_apply'{$ENDIF}); // -- zend_hash_del_key_or_index - zend_hash_del_key_or_index := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_del@@8'{$ELSE}'zend_hash_del_key_or_index'{$ENDIF}); + LFunc(@zend_hash_del_key_or_index, {$IFDEF PHP7}'zend_hash_del@@8'{$ELSE}'zend_hash_del_key_or_index'{$ENDIF}); // -- zend_get_hash_value - zend_get_hash_value := GetProcAddress(PHPLib, + LFunc(@zend_get_hash_value, {$IFDEF PHP560}'zend_hash_func'{$ELSE}'zend_get_hash_value'{$ENDIF}); // -- zend_hash_find - zend_hash_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_find'{$ENDIF}); + LFunc(@zend_hash_find, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_find'{$ENDIF}); // -- zend_hash_quick_find - zend_hash_quick_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_quick_find'{$ENDIF}); + LFunc(@zend_hash_quick_find, {$IFDEF PHP7}'zend_hash_find@@8'{$ELSE}'zend_hash_quick_find'{$ENDIF}); // -- zend_hash_index_find - zend_hash_index_find := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_index_find@@8'{$ELSE}'zend_hash_index_find'{$ENDIF}); + LFunc(@zend_hash_index_find, {$IFDEF PHP7}'zend_hash_index_find@@8'{$ELSE}'zend_hash_index_find'{$ENDIF}); // -- zend_hash_exists - zend_hash_exists := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_exists@@8'{$ELSE}'zend_hash_exists'{$ENDIF}); + LFunc(@zend_hash_exists, {$IFDEF PHP7}'zend_hash_exists@@8'{$ELSE}'zend_hash_exists'{$ENDIF}); // -- zend_hash_index_exists - zend_hash_index_exists := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_index_exists@@8'{$ELSE}'zend_hash_index_exists'{$ENDIF}); + LFunc(@zend_hash_index_exists, {$IFDEF PHP7}'zend_hash_index_exists@@8'{$ELSE}'zend_hash_index_exists'{$ENDIF}); {$IFDEF PHP7} - _zend_hash_add_or_update := GetProcAddress(PHPLib, '_zend_hash_add_or_update@@16'); - _zend_hash_add := GetProcAddress(PHPLib, '_zend_hash_add@@12'); - {$IFDEF P_CUT} - zend_hash_index_findZval := GetProcAddress(PHPLib,'zend_hash_index_findZval'); - zend_symtable_findTest := GetProcAddress(PHPLib,'zend_symtable_findTest'); - zend_hash_index_existsZval := GetProcAddress(PHPLib,'zend_hash_index_existsZval'); + LFunc(@_zend_hash_add_or_update, '_zend_hash_add_or_update@@16'); + LFunc(@_zend_hash_add, '_zend_hash_add@@12'); + {$IFDEF CUTTED_PHP7dll} + LFunc(@zend_hash_index_findZval,'zend_hash_index_findZval'); + LFunc(@zend_symtable_findTest,'zend_symtable_findTest'); + LFunc(@zend_hash_index_existsZval,'zend_hash_index_existsZval'); {$ENDIF} {$ELSE} // -- zend_hash_next_free_element - zend_hash_next_free_element := GetProcAddress(PHPLib, 'zend_hash_next_free_element'); + LFunc(@zend_hash_next_free_element, 'zend_hash_next_free_element'); {$ENDIF} // -- zend_hash_move_forward_ex - zend_hash_move_forward_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_move_forward_ex@@8'{$ELSE}'zend_hash_move_forward_ex'{$ENDIF}); + LFunc(@zend_hash_move_forward_ex, {$IFDEF PHP7}'zend_hash_move_forward_ex@@8'{$ELSE}'zend_hash_move_forward_ex'{$ENDIF}); // -- zend_hash_move_backwards_ex - zend_hash_move_backwards_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_move_backwards_ex@@8'{$ELSE}'zend_hash_move_backwards_ex'{$ENDIF}); + LFunc(@zend_hash_move_backwards_ex, {$IFDEF PHP7}'zend_hash_move_backwards_ex@@8'{$ELSE}'zend_hash_move_backwards_ex'{$ENDIF}); // -- zend_hash_get_current_key_ex - zend_hash_get_current_key_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_key_ex@@16'{$ELSE}'zend_hash_get_current_key_ex'{$ENDIF}); + LFunc(@zend_hash_get_current_key_ex, {$IFDEF PHP7}'zend_hash_get_current_key_ex@@16'{$ELSE}'zend_hash_get_current_key_ex'{$ENDIF}); // -- zend_hash_get_current_key_type_ex - zend_hash_get_current_key_type_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_key_type_ex@@8'{$ELSE}'zend_hash_get_current_key_type_ex'{$ENDIF}); + LFunc(@zend_hash_get_current_key_type_ex, {$IFDEF PHP7}'zend_hash_get_current_key_type_ex@@8'{$ELSE}'zend_hash_get_current_key_type_ex'{$ENDIF}); // -- zend_hash_get_current_data_ex - zend_hash_get_current_data_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_get_current_data_ex@@8'{$ELSE}'zend_hash_get_current_data_ex'{$ENDIF}); + LFunc(@zend_hash_get_current_data_ex, {$IFDEF PHP7}'zend_hash_get_current_data_ex@@8'{$ELSE}'zend_hash_get_current_data_ex'{$ENDIF}); // -- zend_hash_internal_pointer_reset_ex - zend_hash_internal_pointer_reset_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_internal_pointer_reset_ex@@8'{$ELSE}'zend_hash_internal_pointer_reset_ex'{$ENDIF}); + LFunc(@zend_hash_internal_pointer_reset_ex, {$IFDEF PHP7}'zend_hash_internal_pointer_reset_ex@@8'{$ELSE}'zend_hash_internal_pointer_reset_ex'{$ENDIF}); // -- zend_hash_internal_pointer_end_ex - zend_hash_internal_pointer_end_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_internal_pointer_end_ex@@8'{$ELSE}'zend_hash_internal_pointer_end_ex'{$ENDIF}); + LFunc(@zend_hash_internal_pointer_end_ex, {$IFDEF PHP7}'zend_hash_internal_pointer_end_ex@@8'{$ELSE}'zend_hash_internal_pointer_end_ex'{$ENDIF}); // -- zend_hash_copy - zend_hash_copy := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_copy@@12'{$ELSE}'zend_hash_copy'{$ENDIF}); + LFunc(@zend_hash_copy, {$IFDEF PHP7}'zend_hash_copy@@12'{$ELSE}'zend_hash_copy'{$ENDIF}); // -- zend_hash_sort - zend_hash_sort := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_sort_ex@@16'{$ELSE}'zend_hash_sort'{$ENDIF}); + LFunc(@zend_hash_sort, {$IFDEF PHP7}'zend_hash_sort_ex@@16'{$ELSE}'zend_hash_sort'{$ENDIF}); // -- zend_hash_compare - zend_hash_compare := GetProcAddress(PHPLib, 'zend_hash_compare'); + LFunc(@zend_hash_compare, 'zend_hash_compare'); // -- zend_hash_minmax - zend_hash_minmax := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_minmax@@12'{$ELSE}'zend_hash_minmax'{$ENDIF}); + LFunc(@zend_hash_minmax, {$IFDEF PHP7}'zend_hash_minmax@@12'{$ELSE}'zend_hash_minmax'{$ENDIF}); // -- zend_hash_num_elements {$IFNDEF PHP7} - zend_hash_num_elements := GetProcAddress(PHPLib, 'zend_hash_num_elements'); + LFunc(@zend_hash_num_elements, 'zend_hash_num_elements'); {$ENDIF} // -- zend_hash_rehash - zend_hash_rehash := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_hash_rehash@@4'{$ELSE}'zend_hash_rehash'{$ENDIF}); + LFunc(@zend_hash_rehash, {$IFDEF PHP7}'zend_hash_rehash@@4'{$ELSE}'zend_hash_rehash'{$ENDIF}); // -- zend_hash_func - zend_hash_func := GetProcAddress(PHPLib, 'zend_hash_func'); + LFunc(@zend_hash_func, 'zend_hash_func'); // -- zend_get_constant - zend_get_constant := GetProcAddress(PHPLib, 'zend_get_constant'); + LFunc(@zend_get_constant, 'zend_get_constant'); + + // -- zend_register_null_constant + LFunc(@zend_register_null_constant, 'zend_register_null_constant'); + + // -- zend_register_bool_constant + LFunc(@zend_register_bool_constant, 'zend_register_bool_constant'); // -- zend_register_long_constant - zend_register_long_constant := GetProcAddress(PHPLib, 'zend_register_long_constant'); + LFunc(@zend_register_long_constant, 'zend_register_long_constant'); // -- zend_register_double_constant - zend_register_double_constant := GetProcAddress(PHPLib, 'zend_register_double_constant'); + LFunc(@zend_register_double_constant, 'zend_register_double_constant'); // -- zend_register_string_constant - zend_register_string_constant := GetProcAddress(PHPLib, 'zend_register_string_constant'); + LFunc(@zend_register_string_constant, 'zend_register_string_constant'); // -- zend_register_stringl_constant - zend_register_stringl_constant := GetProcAddress(PHPLib, 'zend_register_stringl_constant'); + LFunc(@zend_register_stringl_constant, 'zend_register_stringl_constant'); // -- zend_register_constant - zend_register_constant := GetProcAddress(PHPLib, 'zend_register_constant'); + LFunc(@zend_register_constant, 'zend_register_constant'); - zend_register_auto_global := GetProcAddress(PHPLib, 'zend_register_auto_global'); + LFunc(@zend_register_auto_global, 'zend_register_auto_global'); {$IFDEF PHP5} - zend_activate_auto_globals := GetProcAddress(PHPLib, 'zend_activate_auto_globals'); + LFunc(@zend_activate_auto_globals, 'zend_activate_auto_globals'); {$ENDIF} // -- tsrm_shutdown - tsrm_shutdown := GetProcAddress(PHPLib, 'tsrm_shutdown'); + LFunc(@tsrm_shutdown, 'tsrm_shutdown'); // -- ts_resource_ex - ts_resource_ex := GetProcAddress(PHPLib, 'ts_resource_ex'); + LFunc(@ts_resource_ex, 'ts_resource_ex'); // -- ts_free_thread - ts_free_thread := GetProcAddress(PHPLib, 'ts_free_thread'); + LFunc(@ts_free_thread, 'ts_free_thread'); // -- zend_error - zend_error := GetProcAddress(PHPLib, 'zend_error'); + LFunc(@zend_error, 'zend_error'); // -- zend_error_cb - zend_error_cb := GetProcAddress(PHPLib, 'zend_error_cb'); + LFunc(@zend_error_cb, 'zend_error_cb'); // -- zend_eval_string - zend_eval_string := GetProcAddress(PHPLib, 'zend_eval_string'); - - // -- zend_make_compiled_string_description - zend_make_compiled_string_description := GetProcAddress(PHPLib, 'zend_make_compiled_string_description'); + LFunc(@zend_eval_string, 'zend_eval_string'); + // -- zend_eval_string + LFunc(@zend_eval_string_ex, 'zend_eval_string_ex'); - {$IFDEF PHP4} - // -- _zval_dtor - _zval_dtor := GetProcAddress(PHPLib, '_zval_dtor'); - - // -- _zval_copy_ctor - _zval_copy_ctor := GetProcAddress(PHPLib, '_zval_copy_ctor'); - - {$ELSE} - _zval_copy_ctor_func := GetProcAddress(PHPLib, {$IFDEF PHP7}'_zval_copy_ctor_func@@4'{$ELSE}'_zval_copy_ctor_func'{$ENDIF}); - _zval_dtor_func := GetProcAddress(PHPLib, {$IFDEF PHP7}'_zval_dtor_func@@4'{$ELSE}'_zval_dtor_func'{$ENDIF}); - _zval_ptr_dtor := GetProcAddress(PHPLib, '_zval_ptr_dtor'); + // -- zend_make_compiled_string_description + LFunc(@zend_make_compiled_string_description, 'zend_make_compiled_string_description'); - {$ENDIF} + LFunc(@_zval_copy_ctor_func, {$IFDEF PHP7}'_zval_copy_ctor_func@@4'{$ELSE}'_zval_copy_ctor_func'{$ENDIF}); + LFunc(@_zval_dtor_func, {$IFDEF PHP7}'_zval_dtor_func@@4'{$ELSE}'_zval_dtor_func'{$ENDIF}); + LFunc(@_zval_ptr_dtor, '_zval_ptr_dtor'); // -- zend_print_variable - zend_print_variable := GetProcAddress(PHPLib, 'zend_print_variable'); + LFunc(@zend_print_variable, 'zend_print_variable'); // -- zend_stack_init - zend_stack_init := GetProcAddress(PHPLib, 'zend_stack_init'); + LFunc(@zend_stack_init, 'zend_stack_init'); // -- zend_stack_push - zend_stack_push := GetProcAddress(PHPLib, 'zend_stack_push'); + LFunc(@zend_stack_push, 'zend_stack_push'); // -- zend_stack_top - zend_stack_top := GetProcAddress(PHPLib, 'zend_stack_top'); + LFunc(@zend_stack_top, 'zend_stack_top'); // -- zend_stack_del_top - zend_stack_del_top := GetProcAddress(PHPLib, 'zend_stack_del_top'); + LFunc(@zend_stack_del_top, 'zend_stack_del_top'); // -- zend_stack_int_top - zend_stack_int_top := GetProcAddress(PHPLib, 'zend_stack_int_top'); + LFunc(@zend_stack_int_top, 'zend_stack_int_top'); // -- zend_stack_is_empty - zend_stack_is_empty := GetProcAddress(PHPLib, 'zend_stack_is_empty'); + LFunc(@zend_stack_is_empty, 'zend_stack_is_empty'); // -- zend_stack_destroy - zend_stack_destroy := GetProcAddress(PHPLib, 'zend_stack_destroy'); + LFunc(@zend_stack_destroy, 'zend_stack_destroy'); // -- zend_stack_base - zend_stack_base := GetProcAddress(PHPLib, 'zend_stack_base'); + LFunc(@zend_stack_base, 'zend_stack_base'); // -- zend_stack_count - zend_stack_count := GetProcAddress(PHPLib, 'zend_stack_count'); + LFunc(@zend_stack_count, 'zend_stack_count'); // -- zend_stack_apply - zend_stack_apply := GetProcAddress(PHPLib, 'zend_stack_apply'); + LFunc(@zend_stack_apply, 'zend_stack_apply'); // -- zend_stack_apply_with_argument - zend_stack_apply_with_argument := GetProcAddress(PHPLib, 'zend_stack_apply_with_argument'); + LFunc(@zend_stack_apply_with_argument, 'zend_stack_apply_with_argument'); // -- _convert_to_string - _convert_to_string := GetProcAddress(PHPLib, {$IFDEF PHP7}'_convert_to_string@@4'{$ELSE}'_convert_to_string'{$ENDIF}); + LFunc(@_convert_to_string, {$IFDEF PHP7}'_convert_to_string@@4'{$ELSE}'_convert_to_string'{$ENDIF}); // -- add_function - add_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'add_function@@12'{$ELSE}'add_function'{$ENDIF}); + LFunc(@add_function, {$IFDEF PHP7}'add_function@@12'{$ELSE}'add_function'{$ENDIF}); // -- sub_function - sub_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'sub_function@@12'{$ELSE}'sub_function'{$ENDIF}); + LFunc(@sub_function, {$IFDEF PHP7}'sub_function@@12'{$ELSE}'sub_function'{$ENDIF}); // -- mul_function - mul_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'mul_function@@12'{$ELSE}'mul_function'{$ENDIF}); + LFunc(@mul_function, {$IFDEF PHP7}'mul_function@@12'{$ELSE}'mul_function'{$ENDIF}); // -- div_function - div_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'div_function@@12'{$ELSE}'div_function'{$ENDIF}); + LFunc(@div_function, {$IFDEF PHP7}'div_function@@12'{$ELSE}'div_function'{$ENDIF}); // -- mod_function - mod_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'mod_function@@12'{$ELSE}'mod_function'{$ENDIF}); + LFunc(@mod_function, {$IFDEF PHP7}'mod_function@@12'{$ELSE}'mod_function'{$ENDIF}); // -- boolean_xor_function - boolean_xor_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'boolean_xor_function@@12'{$ELSE}'boolean_xor_function'{$ENDIF}); + LFunc(@boolean_xor_function, {$IFDEF PHP7}'boolean_xor_function@@12'{$ELSE}'boolean_xor_function'{$ENDIF}); // -- boolean_not_function - boolean_not_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'boolean_not_function@@8'{$ELSE}'boolean_not_function'{$ENDIF}); + LFunc(@boolean_not_function, {$IFDEF PHP7}'boolean_not_function@@8'{$ELSE}'boolean_not_function'{$ENDIF}); // -- bitwise_not_function - bitwise_not_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_not_function@@8'{$ELSE}'bitwise_not_function'{$ENDIF}); + LFunc(@bitwise_not_function, {$IFDEF PHP7}'bitwise_not_function@@8'{$ELSE}'bitwise_not_function'{$ENDIF}); // -- bitwise_or_function - bitwise_or_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_or_function@@12'{$ELSE}'bitwise_or_function'{$ENDIF}); + LFunc(@bitwise_or_function, {$IFDEF PHP7}'bitwise_or_function@@12'{$ELSE}'bitwise_or_function'{$ENDIF}); // -- bitwise_and_function - bitwise_and_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_and_function@@12'{$ELSE}'bitwise_and_function'{$ENDIF}); + LFunc(@bitwise_and_function, {$IFDEF PHP7}'bitwise_and_function@@12'{$ELSE}'bitwise_and_function'{$ENDIF}); // -- bitwise_xor_function - bitwise_xor_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'bitwise_xor_function@@12'{$ELSE}'bitwise_xor_function'{$ENDIF}); + LFunc(@bitwise_xor_function, {$IFDEF PHP7}'bitwise_xor_function@@12'{$ELSE}'bitwise_xor_function'{$ENDIF}); // -- shift_left_function - shift_left_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'shift_left_function@@12'{$ELSE}'shift_left_function'{$ENDIF}); + LFunc(@shift_left_function, {$IFDEF PHP7}'shift_left_function@@12'{$ELSE}'shift_left_function'{$ENDIF}); // -- shift_right_function - shift_right_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'shift_right_function@@12'{$ELSE}'shift_right_function'{$ENDIF}); + LFunc(@shift_right_function, {$IFDEF PHP7}'shift_right_function@@12'{$ELSE}'shift_right_function'{$ENDIF}); // -- concat_function - concat_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'concat_function@@12'{$ELSE}'concat_function'{$ENDIF}); + LFunc(@concat_function, {$IFDEF PHP7}'concat_function@@12'{$ELSE}'concat_function'{$ENDIF}); // -- is_equal_function - is_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_equal_function@@12'{$ELSE}'is_equal_function'{$ENDIF}); + LFunc(@is_equal_function, {$IFDEF PHP7}'is_equal_function@@12'{$ELSE}'is_equal_function'{$ENDIF}); // -- is_identical_function - is_identical_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_identical_function@@12'{$ELSE}'is_identical_function'{$ENDIF}); + LFunc(@is_identical_function, {$IFDEF PHP7}'is_identical_function@@12'{$ELSE}'is_identical_function'{$ENDIF}); // -- is_not_identical_function - is_not_identical_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_not_identical_function@@12'{$ELSE}'is_not_identical_function'{$ENDIF}); + LFunc(@is_not_identical_function, {$IFDEF PHP7}'is_not_identical_function@@12'{$ELSE}'is_not_identical_function'{$ENDIF}); // -- is_not_equal_function - is_not_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_not_equal_function@@12'{$ELSE}'is_not_equal_function'{$ENDIF}); + LFunc(@is_not_equal_function, {$IFDEF PHP7}'is_not_equal_function@@12'{$ELSE}'is_not_equal_function'{$ENDIF}); // -- is_smaller_function - is_smaller_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_smaller_function@@12'{$ELSE}'is_smaller_function'{$ENDIF}); + LFunc(@is_smaller_function, {$IFDEF PHP7}'is_smaller_function@@12'{$ELSE}'is_smaller_function'{$ENDIF}); // -- is_smaller_or_equal_function - is_smaller_or_equal_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'is_smaller_or_equal_function@@12'{$ELSE}'is_smaller_or_equal_function'{$ENDIF}); + LFunc(@is_smaller_or_equal_function, {$IFDEF PHP7}'is_smaller_or_equal_function@@12'{$ELSE}'is_smaller_or_equal_function'{$ENDIF}); // -- increment_function - increment_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'increment_function@@4'{$ELSE}'increment_function'{$ENDIF}); + LFunc(@increment_function, {$IFDEF PHP7}'increment_function@@4'{$ELSE}'increment_function'{$ENDIF}); // -- decrement_function - decrement_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'decrement_function@@4'{$ELSE}'decrement_function'{$ENDIF}); + LFunc(@decrement_function, {$IFDEF PHP7}'decrement_function@@4'{$ELSE}'decrement_function'{$ENDIF}); // -- convert_scalar_to_number - convert_scalar_to_number := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_scalar_to_number@@4'{$ELSE}'convert_scalar_to_number'{$ENDIF}); + LFunc(@convert_scalar_to_number, {$IFDEF PHP7}'convert_scalar_to_number@@4'{$ELSE}'convert_scalar_to_number'{$ENDIF}); // -- convert_to_long - convert_to_long := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_long@@4'{$ELSE}'convert_to_long'{$ENDIF}); + LFunc(@convert_to_long, {$IFDEF PHP7}'convert_to_long@@4'{$ELSE}'convert_to_long'{$ENDIF}); // -- convert_to_double - convert_to_double := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_double@@4'{$ELSE}'convert_to_double'{$ENDIF}); + LFunc(@convert_to_double, {$IFDEF PHP7}'convert_to_double@@4'{$ELSE}'convert_to_double'{$ENDIF}); // -- convert_to_long_base - convert_to_long_base := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_long_base@@8'{$ELSE}'convert_to_long_base'{$ENDIF}); + LFunc(@convert_to_long_base, {$IFDEF PHP7}'convert_to_long_base@@8'{$ELSE}'convert_to_long_base'{$ENDIF}); // -- convert_to_null - convert_to_null := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_null@@4'{$ELSE}'convert_to_null'{$ENDIF}); + LFunc(@convert_to_null, {$IFDEF PHP7}'convert_to_null@@4'{$ELSE}'convert_to_null'{$ENDIF}); // -- convert_to_boolean - convert_to_boolean := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_boolean@@4'{$ELSE}'convert_to_boolean'{$ENDIF}); + LFunc(@convert_to_boolean, {$IFDEF PHP7}'convert_to_boolean@@4'{$ELSE}'convert_to_boolean'{$ENDIF}); // -- convert_to_array - convert_to_array := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_array@@4'{$ELSE}'convert_to_array'{$ENDIF}); + LFunc(@convert_to_array, {$IFDEF PHP7}'convert_to_array@@4'{$ELSE}'convert_to_array'{$ENDIF}); // -- convert_to_object - convert_to_object := GetProcAddress(PHPLib, {$IFDEF PHP7}'convert_to_object@@4'{$ELSE}'convert_to_object'{$ENDIF}); + LFunc(@convert_to_object, {$IFDEF PHP7}'convert_to_object@@4'{$ELSE}'convert_to_object'{$ENDIF}); {$IFNDEF PHP7} // -- add_char_to_string - add_char_to_string := GetProcAddress(PHPLib, 'add_char_to_string'); + LFunc(@add_char_to_string, 'add_char_to_string'); // -- add_string_to_string - add_string_to_string := GetProcAddress(PHPLib, 'add_string_to_string'); + LFunc(@add_string_to_string, 'add_string_to_string'); {$ENDIF} // -- zend_string_to_double - zend_string_to_double := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_strtod'{$ELSE}'zend_string_to_double'{$ENDIF}); + LFunc(@zend_string_to_double, {$IFDEF PHP7}'zend_strtod'{$ELSE}'zend_string_to_double'{$ENDIF}); // -- zval_is_true - zval_is_true := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_is_true@@4'{$ELSE}'zval_is_true'{$ENDIF}); + LFunc(@zval_is_true, {$IFDEF PHP7}'zend_is_true@@4'{$ELSE}'zval_is_true'{$ENDIF}); // -- compare_function - compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'compare_function@@12'{$ELSE}'compare_function'{$ENDIF}); + LFunc(@compare_function, {$IFDEF PHP7}'compare_function@@12'{$ELSE}'compare_function'{$ENDIF}); // -- numeric_compare_function - numeric_compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'numeric_compare_function@@8'{$ELSE}'numeric_compare_function'{$ENDIF}); + LFunc(@numeric_compare_function, {$IFDEF PHP7}'numeric_compare_function@@8'{$ELSE}'numeric_compare_function'{$ENDIF}); // -- string_compare_function - string_compare_function := GetProcAddress(PHPLib, {$IFDEF PHP7}'string_compare_function@@8'{$ELSE}'string_compare_function'{$ENDIF}); + LFunc(@string_compare_function, {$IFDEF PHP7}'string_compare_function@@8'{$ELSE}'string_compare_function'{$ENDIF}); // -- zend_str_tolower - zend_str_tolower := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_str_tolower@@8'{$ELSE}'zend_str_tolower'{$ENDIF}); + LFunc(@zend_str_tolower, {$IFDEF PHP7}'zend_str_tolower@@8'{$ELSE}'zend_str_tolower'{$ENDIF}); // -- zend_binary_zval_strcmp - zend_binary_zval_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strcmp@@8'{$ELSE}'zend_binary_zval_strcmp'{$ENDIF}); + LFunc(@zend_binary_zval_strcmp, {$IFDEF PHP7}'zend_binary_zval_strcmp@@8'{$ELSE}'zend_binary_zval_strcmp'{$ENDIF}); // -- zend_binary_zval_strncmp - zend_binary_zval_strncmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strncmp@@12'{$ELSE}'zend_binary_zval_strncmp'{$ENDIF}); + LFunc(@zend_binary_zval_strncmp, {$IFDEF PHP7}'zend_binary_zval_strncmp@@12'{$ELSE}'zend_binary_zval_strncmp'{$ENDIF}); // -- zend_binary_zval_strcasecmp - zend_binary_zval_strcasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strcasecmp@@8'{$ELSE}'zend_binary_zval_strcasecmp'{$ENDIF}); + LFunc(@zend_binary_zval_strcasecmp, {$IFDEF PHP7}'zend_binary_zval_strcasecmp@@8'{$ELSE}'zend_binary_zval_strcasecmp'{$ENDIF}); // -- zend_binary_zval_strncasecmp - zend_binary_zval_strncasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_zval_strncasecmp@@12'{$ELSE}'zend_binary_zval_strncasecmp'{$ENDIF}); + LFunc(@zend_binary_zval_strncasecmp, {$IFDEF PHP7}'zend_binary_zval_strncasecmp@@12'{$ELSE}'zend_binary_zval_strncasecmp'{$ENDIF}); // -- zend_binary_strcmp - zend_binary_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strcmp@@16'{$ELSE}'zend_binary_strcmp'{$ENDIF}); + LFunc(@zend_binary_strcmp, {$IFDEF PHP7}'zend_binary_strcmp@@16'{$ELSE}'zend_binary_strcmp'{$ENDIF}); // -- zend_binary_strncmp - zend_binary_strncmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strncmp@@20'{$ELSE}'zend_binary_strncmp'{$ENDIF}); + LFunc(@zend_binary_strncmp, {$IFDEF PHP7}'zend_binary_strncmp@@20'{$ELSE}'zend_binary_strncmp'{$ENDIF}); // -- zend_binary_strcasecmp - zend_binary_strcasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strcasecmp@@16'{$ELSE}'zend_binary_strcasecmp'{$ENDIF}); + LFunc(@zend_binary_strcasecmp, {$IFDEF PHP7}'zend_binary_strcasecmp@@16'{$ELSE}'zend_binary_strcasecmp'{$ENDIF}); // -- zend_binary_strncasecmp - zend_binary_strncasecmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_binary_strncasecmp@@20'{$ELSE}'zend_binary_strncasecmp'{$ENDIF}); + LFunc(@zend_binary_strncasecmp, {$IFDEF PHP7}'zend_binary_strncasecmp@@20'{$ELSE}'zend_binary_strncasecmp'{$ENDIF}); // -- zendi_smart_strcmp - zendi_smart_strcmp := GetProcAddress(PHPLib, {$IFDEF PHP7}'zendi_smart_strcmp@@8'{$ELSE}'zendi_smart_strcmp'{$ENDIF}); + LFunc(@zendi_smart_strcmp, {$IFDEF PHP7}'zendi_smart_strcmp@@8'{$ELSE}'zendi_smart_strcmp'{$ENDIF}); // -- zend_compare_symbol_tables - zend_compare_symbol_tables := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_symbol_tables@@8'{$ELSE}'zend_compare_symbol_tables'{$ENDIF}); + LFunc(@zend_compare_symbol_tables, {$IFDEF PHP7}'zend_compare_symbol_tables@@8'{$ELSE}'zend_compare_symbol_tables'{$ENDIF}); // -- zend_compare_arrays - zend_compare_arrays := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_arrays@@8'{$ELSE}'zend_compare_arrays'{$ENDIF}); + LFunc(@zend_compare_arrays, {$IFDEF PHP7}'zend_compare_arrays@@8'{$ELSE}'zend_compare_arrays'{$ENDIF}); // -- zend_compare_objects - zend_compare_objects := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_compare_objects@@8'{$ELSE}'zend_compare_objects'{$ENDIF}); + LFunc(@zend_compare_objects, {$IFDEF PHP7}'zend_compare_objects@@8'{$ELSE}'zend_compare_objects'{$ENDIF}); // -- zend_atoi - zend_atoi := GetProcAddress(PHPLib, {$IFDEF PHP7}'zend_atoi@@8'{$ELSE}'zend_atoi'{$ENDIF}); + LFunc(@zend_atoi, {$IFDEF PHP7}'zend_atoi@@8'{$ELSE}'zend_atoi'{$ENDIF}); // -- get_active_function_name - get_active_function_name := GetProcAddress(PHPLib, 'get_active_function_name'); + LFunc(@get_active_function_name, 'get_active_function_name'); // -- zend_get_executed_filename - zend_get_executed_filename := GetProcAddress(PHPLib, 'zend_get_executed_filename'); + LFunc(@zend_get_executed_filename, 'zend_get_executed_filename'); // -- zend_get_executed_lineno - zend_get_executed_lineno := GetProcAddress(PHPLib, 'zend_get_executed_lineno'); + LFunc(@zend_get_executed_lineno, 'zend_get_executed_lineno'); // -- zend_set_timeout - zend_set_timeout := GetProcAddress(PHPLib, 'zend_set_timeout'); + LFunc(@zend_set_timeout, 'zend_set_timeout'); // -- zend_unset_timeout - zend_unset_timeout := GetProcAddress(PHPLib, 'zend_unset_timeout'); + LFunc(@zend_unset_timeout, 'zend_unset_timeout'); // -- zend_timeout - zend_timeout := GetProcAddress(PHPLib, 'zend_timeout'); + LFunc(@zend_timeout, 'zend_timeout'); // -- zend_highlight - zend_highlight := GetProcAddress(PHPLib, 'zend_highlight'); + LFunc(@zend_highlight, 'zend_highlight'); // -- zend_strip - zend_strip := GetProcAddress(PHPLib, 'zend_strip'); + LFunc(@zend_strip, 'zend_strip'); // -- highlight_file - highlight_file := GetProcAddress(PHPLib, 'highlight_file'); + LFunc(@highlight_file, 'highlight_file'); // -- highlight_string - highlight_string := GetProcAddress(PHPLib, 'highlight_string'); + LFunc(@highlight_string, 'highlight_string'); // -- zend_html_putc - zend_html_putc := GetProcAddress(PHPLib, 'zend_html_putc'); + LFunc(@zend_html_putc, 'zend_html_putc'); // -- zend_html_puts - zend_html_puts := GetProcAddress(PHPLib, 'zend_html_puts'); + LFunc(@zend_html_puts, 'zend_html_puts'); + + LFunc(@zend_parse_method_parameters, 'zend_parse_method_parameters'); + LFunc(@zend_parse_method_parameters_ex, 'zend_parse_method_parameters_ex'); + {$IFDEF PHP7} // -- zend_parse_parameters_throw - zend_parse_parameters_throw := GetProcAddress(PHPLib, 'zend_parse_parameters_throw'); - ZvalGetArgs := GetProcAddress(PHPLib, 'zend_get_parameters_ex'); - _zend_get_parameters_array_ex := GetProcAddress(PHPLib, '_zend_get_parameters_array_ex'); + LFunc(@zend_parse_parameters_throw, 'zend_parse_parameters_throw'); + LFunc(@ZvalGetArgs, 'zend_get_parameters_ex'); {$ELSE} // -- zend_indent - zend_indent := GetProcAddress(PHPLib, 'zend_indent'); + LFunc(@zend_indent, 'zend_indent'); {$ENDIF} + // -- _zend_get_parameters_array + LFunc(@_zend_get_parameters_array, '_zend_get_parameters_array'); + // -- _zend_get_parameters_array_ex - _zend_get_parameters_array_ex := GetProcAddress(PHPLib, {$IFDEF PHP7}{$ELSE}{$ENDIF}'_zend_get_parameters_array_ex'); + LFunc(@_zend_get_parameters_array_ex, '_zend_get_parameters_array_ex'); // -- zend_ini_refresh_caches - zend_ini_refresh_caches := GetProcAddress(PHPLib, 'zend_ini_refresh_caches'); + LFunc(@zend_ini_refresh_caches, 'zend_ini_refresh_caches'); // -- zend_alter_ini_entry - zend_alter_ini_entry := GetProcAddress(PHPLib, 'zend_alter_ini_entry'); - zend_alter_ini_entry_ex:= GetProcAddress(PHPLib, 'zend_alter_ini_entry_ex'); + LFunc(@zend_alter_ini_entry, 'zend_alter_ini_entry'); + LFunc(@zend_alter_ini_entry_ex, 'zend_alter_ini_entry_ex'); // -- zend_restore_ini_entry - zend_restore_ini_entry := GetProcAddress(PHPLib, 'zend_restore_ini_entry'); + LFunc(@zend_restore_ini_entry, 'zend_restore_ini_entry'); // -- zend_ini_long - zend_ini_long := GetProcAddress(PHPLib, 'zend_ini_long'); + LFunc(@zend_ini_long, 'zend_ini_long'); // -- zend_ini_double - zend_ini_double := GetProcAddress(PHPLib, 'zend_ini_double'); + LFunc(@zend_ini_double, 'zend_ini_double'); // -- zend_ini_string - zend_ini_string := GetProcAddress(PHPLib, 'zend_ini_string'); + LFunc(@zend_ini_string, 'zend_ini_string'); // -- compile_string - compile_string := GetProcAddress(PHPLib, 'compile_string'); + LFunc(@compile_string, 'compile_string'); // -- execute - execute := GetProcAddress(PHPLib, {$IFDEF PHP550}'zend_execute'{$ELSE}'execute'{$ENDIF}); + LFunc(@execute, {$IFDEF PHP550}'zend_execute'{$ELSE}'execute'{$ENDIF}); // -- zend_wrong_param_count - zend_wrong_param_count := GetProcAddress(PHPLib, 'zend_wrong_param_count'); + LFunc(@zend_wrong_param_count, 'zend_wrong_param_count'); // -- zend_hash_quick_add_or_update - _zend_hash_quick_add_or_update := GetProcAddress(PHPLib, '_zend_hash_quick_add_or_update'); + LFunc(@_zend_hash_quick_add_or_update, '_zend_hash_quick_add_or_update'); // -- add_property_long_ex - add_property_long_ex := GetProcAddress(PHPLib, 'add_property_long_ex'); + LFunc(@add_property_long_ex, 'add_property_long_ex'); // -- add_property_null_ex - add_property_null_ex := GetProcAddress(PHPLib, 'add_property_null_ex'); + LFunc(@add_property_null_ex, 'add_property_null_ex'); // -- add_property_bool_ex - add_property_bool_ex := GetProcAddress(PHPLib, 'add_property_bool_ex'); + LFunc(@add_property_bool_ex, 'add_property_bool_ex'); // -- add_property_resource_ex - add_property_resource_ex := GetProcAddress(PHPLib, 'add_property_resource_ex'); + LFunc(@add_property_resource_ex, 'add_property_resource_ex'); // -- add_property_double_ex - add_property_double_ex := GetProcAddress(PHPLib, 'add_property_double_ex'); + LFunc(@add_property_double_ex, 'add_property_double_ex'); // -- add_property_string_ex - add_property_string_ex := GetProcAddress(PHPLib, 'add_property_string_ex'); + LFunc(@add_property_string_ex, 'add_property_string_ex'); // -- add_property_stringl_ex - add_property_stringl_ex := GetProcAddress(PHPLib, 'add_property_stringl_ex'); + LFunc(@add_property_stringl_ex, 'add_property_stringl_ex'); // -- add_property_zval_ex - add_property_zval_ex := GetProcAddress(PHPLib, 'add_property_zval_ex'); + LFunc(@add_property_zval_ex, 'add_property_zval_ex'); - call_user_function := GetProcAddress(PHPLib, {$IFDEF P_CUT}'__call_function'{$ELSE}'call_user_function'{$ENDIF}); - {$IFNDEF P_CUT} - call_user_function_ex := GetProcAddress(PHPLib, 'call_user_function_ex'); + LFunc(@call_user_function, {$IFDEF CUTTED_PHP7dll}'__call_function'{$ELSE}'call_user_function'{$ENDIF}); + {$IFNDEF CUTTED_PHP7dll} + LFunc(@call_user_function_ex, 'call_user_function_ex'); {$ENDIF} // -- add_assoc_long_ex - add_assoc_long_ex := GetProcAddress(PHPLib, 'add_assoc_long_ex'); + LFunc(@add_assoc_long_ex, 'add_assoc_long_ex'); // -- add_assoc_null_ex - add_assoc_null_ex := GetProcAddress(PHPLib, 'add_assoc_null_ex'); + LFunc(@add_assoc_null_ex, 'add_assoc_null_ex'); // -- add_assoc_bool_ex - add_assoc_bool_ex := GetProcAddress(PHPLib, 'add_assoc_bool_ex'); + LFunc(@add_assoc_bool_ex, 'add_assoc_bool_ex'); // -- add_assoc_resource_ex - add_assoc_resource_ex := GetProcAddress(PHPLib, 'add_assoc_resource_ex'); + LFunc(@add_assoc_resource_ex, 'add_assoc_resource_ex'); // -- add_assoc_double_ex - add_assoc_double_ex := GetProcAddress(PHPLib, 'add_assoc_double_ex'); + LFunc(@add_assoc_double_ex, 'add_assoc_double_ex'); // -- add_assoc_string_ex - add_assoc_string_ex := GetProcAddress(PHPLib, 'add_assoc_string_ex'); + LFunc(@add_assoc_string_ex, 'add_assoc_string_ex'); // -- add_assoc_stringl_ex - add_assoc_stringl_ex := GetProcAddress(PHPLib, 'add_assoc_stringl_ex'); + LFunc(@add_assoc_stringl_ex, 'add_assoc_stringl_ex'); // -- add_assoc_zval_ex - add_assoc_zval_ex := GetProcAddress(PHPLib, 'add_assoc_zval_ex'); + LFunc(@add_assoc_zval_ex, 'add_assoc_zval_ex'); // -- add_index_long - add_index_long := GetProcAddress(PHPLib, 'add_index_long'); + LFunc(@add_index_long, 'add_index_long'); // -- add_index_null - add_index_null := GetProcAddress(PHPLib, 'add_index_null'); + LFunc(@add_index_null, 'add_index_null'); // -- add_index_bool - add_index_bool := GetProcAddress(PHPLib, 'add_index_bool'); + LFunc(@add_index_bool, 'add_index_bool'); // -- add_index_resource - add_index_resource := GetProcAddress(PHPLib, 'add_index_resource'); + LFunc(@add_index_resource, 'add_index_resource'); // -- add_index_double - add_index_double := GetProcAddress(PHPLib, 'add_index_double'); + LFunc(@add_index_double, 'add_index_double'); // -- add_index_string - add_index_string := GetProcAddress(PHPLib, 'add_index_string'); + LFunc(@add_index_string, 'add_index_string'); // -- add_index_stringl - add_index_stringl := GetProcAddress(PHPLib, 'add_index_stringl'); + LFunc(@add_index_stringl, 'add_index_stringl'); // -- add_index_zval - add_index_zval := GetProcAddress(PHPLib, 'add_index_zval'); + LFunc(@add_index_zval, 'add_index_zval'); // -- add_next_index_long - add_next_index_long := GetProcAddress(PHPLib, 'add_next_index_long'); + LFunc(@add_next_index_long, 'add_next_index_long'); // -- add_next_index_null - add_next_index_null := GetProcAddress(PHPLib, 'add_next_index_null'); + LFunc(@add_next_index_null, 'add_next_index_null'); // -- add_next_index_bool - add_next_index_bool := GetProcAddress(PHPLib, 'add_next_index_bool'); + LFunc(@add_next_index_bool, 'add_next_index_bool'); // -- add_next_index_resource - add_next_index_resource := GetProcAddress(PHPLib, 'add_next_index_resource'); + LFunc(@add_next_index_resource, 'add_next_index_resource'); // -- add_next_index_double - add_next_index_double := GetProcAddress(PHPLib, 'add_next_index_double'); + LFunc(@add_next_index_double, 'add_next_index_double'); // -- add_next_index_string - add_next_index_string := GetProcAddress(PHPLib, 'add_next_index_string'); + LFunc(@add_next_index_string, 'add_next_index_string'); // -- add_next_index_stringl - add_next_index_stringl := GetProcAddress(PHPLib, 'add_next_index_stringl'); + LFunc(@add_next_index_stringl, 'add_next_index_stringl'); // -- add_next_index_zval - add_next_index_zval := GetProcAddress(PHPLib, 'add_next_index_zval'); + LFunc(@add_next_index_zval, 'add_next_index_zval'); // -- add_get_assoc_string_ex - add_get_assoc_string_ex := GetProcAddress(PHPLib, 'add_get_assoc_string_ex'); + LFunc(@add_get_assoc_string_ex, 'add_get_assoc_string_ex'); // -- add_get_assoc_stringl_ex - add_get_assoc_stringl_ex := GetProcAddress(PHPLib, 'add_get_assoc_stringl_ex'); + LFunc(@add_get_assoc_stringl_ex, 'add_get_assoc_stringl_ex'); // -- add_get_index_long - add_get_index_long := GetProcAddress(PHPLib, 'add_get_index_long'); + LFunc(@add_get_index_long, 'add_get_index_long'); // -- add_get_index_double - add_get_index_double := GetProcAddress(PHPLib, 'add_get_index_double'); + LFunc(@add_get_index_double, 'add_get_index_double'); // -- add_get_index_string - add_get_index_string := GetProcAddress(PHPLib, 'add_get_index_string'); + LFunc(@add_get_index_string, 'add_get_index_string'); // -- add_get_index_stringl - add_get_index_stringl := GetProcAddress(PHPLib, 'add_get_index_stringl'); + LFunc(@add_get_index_stringl, 'add_get_index_stringl'); // -- _array_init - _array_init := GetProcAddress(PHPLib, '_array_init'); + LFunc(@_array_init, '_array_init'); // -- _object_init - _object_init := GetProcAddress(PHPLib, '_object_init'); + LFunc(@_object_init, '_object_init'); // -- _object_init_ex - _object_init_ex := GetProcAddress(PHPLib, '_object_init_ex'); + LFunc(@_object_init_ex, '_object_init_ex'); // -- _object_and_properties_init - _object_and_properties_init := GetProcAddress(PHPLib, '_object_and_properties_init'); + LFunc(@_object_and_properties_init, '_object_and_properties_init'); // -- zend_register_internal_class - zend_register_internal_class := GetProcAddress(PHPLib, 'zend_register_internal_class'); + LFunc(@zend_register_internal_class, 'zend_register_internal_class'); // -- zend_register_internal_class_ex - zend_register_internal_class_ex := GetProcAddress(PHPLib, 'zend_register_internal_class_ex'); + LFunc(@zend_register_internal_class_ex, 'zend_register_internal_class_ex'); // -- zend_startup_module - zend_startup_module := GetProcAddress(PHPLib, 'zend_startup_module'); + LFunc(@zend_startup_module, 'zend_startup_module'); // -- zend_startup_module_ex - zend_startup_module_ex := GetProcAddress(PHPLib, 'zend_startup_module_ex'); + LFunc(@zend_startup_module_ex, 'zend_startup_module_ex'); // -- zend_register_module_ex - zend_register_module_ex := GetProcAddress(PHPLib, 'zend_register_module_ex'); + LFunc(@zend_register_module_ex, 'zend_register_module_ex'); // -- zend_register_internal_module - zend_register_internal_module := GetProcAddress(PHPLib, 'zend_register_internal_module'); + LFunc(@zend_register_internal_module, 'zend_register_internal_module'); // -- zend_startup_modules - zend_startup_modules := GetProcAddress(PHPLib, 'zend_startup_modules'); + LFunc(@zend_startup_modules, 'zend_startup_modules'); // -- zend_collect_module_handlers - zend_collect_module_handlers := GetProcAddress(PHPLib, 'zend_collect_module_handlers'); + LFunc(@zend_collect_module_handlers, 'zend_collect_module_handlers'); // -- get_zend_version - get_zend_version := GetProcAddress(PHPLib, 'get_zend_version'); + LFunc(@get_zend_version, 'get_zend_version'); // -- zend_make_printable_zval - zend_make_printable_zval := GetProcAddress(PHPLib, 'zend_make_printable_zval'); + LFunc(@zend_make_printable_zval, 'zend_make_printable_zval'); // -- zend_print_zval - zend_print_zval := GetProcAddress(PHPLib, 'zend_print_zval'); + LFunc(@zend_print_zval, 'zend_print_zval'); // -- zend_print_zval_r - zend_print_zval_r := GetProcAddress(PHPLib, 'zend_print_zval_r'); + LFunc(@zend_print_zval_r, 'zend_print_zval_r'); // -- zend_output_debug_string - zend_output_debug_string := GetProcAddress(PHPLib, 'zend_output_debug_string'); + LFunc(@zend_output_debug_string, 'zend_output_debug_string'); // -- zend_get_parameters - ZendGetParameters := GetProcAddress(PHPLib, 'zend_get_parameters'); + LFunc(@Zend_Get_Parameters, 'zend_get_parameters'); // - zend_get_parameters_ex (native call) - zend_get_params_ex := GetProcAddress(PHPLib, 'zend_get_parameters_ex'); + LFunc(@zend_get_params_ex, 'zend_get_parameters_ex'); {$IFDEF PHP5} - zend_destroy_file_handle := GetProcAddress(PHPLib, 'zend_destroy_file_handle'); + LFunc(@zend_destroy_file_handle, 'zend_destroy_file_handle'); {$ENDIF} - {$IFNDEF QUIET_LOAD} - CheckZendErrors; - {$ENDIF} - - WriteFuncPtr := GetProcAddress(PHPLib, 'zend_write'); + LFunc(WriteFuncPtr, 'zend_write'); if Assigned(WriteFuncPtr) then @zend_write := pointer(WriteFuncPtr^); @@ -3090,11 +3045,6 @@ procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: z class_container.name_length := strlen(class_name); class_container.builtin_functions := functions; {$ENDIF} - {$IFDEF PHP4} - class_container.handle_function_call := nil; - class_container.handle_property_get := nil; - class_container.handle_property_set := nil; - {$ENDIF} end; {$IFNDEF PHP7} function ZEND_FAST_ALLOC: pzval; @@ -3144,29 +3094,6 @@ function MAKE_STD_ZVAL: pzval; INIT_PZVAL(Result); end; -function zend_get_parameters_ex(number: integer; var Params: pzval_array): integer; -var - i : integer; -begin - - if number = 0 then - begin - Result := SUCCESS; - Exit; - end; - {$IFDEF PHP7} - Params.value.arr.nNumOfElements := number; - for i := 0 to number - 1 do - zend_hash_index_add_empty_element(Params.value.arr, i); - Result := ZvalGetArgs(number, @Params); - {$ELSE} - SetLength(Params, number); - for i := 0 to number - 1 do - New(Params[i]); - Result := zend_get_parameters(number, number, Params); - {$ENDIF} -end; - function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS_DC: Pointer): integer; var i : integer; @@ -3212,40 +3139,17 @@ function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS begin Params[i]^ := p^^; if i <> number then + {$IFDEF CPUX64} + p^ := ppzval( integer(p^) + sizeof(ppzval) ); + {$ELSE} inc(integer(p^), sizeof(ppzval)); + {$ENDIF} end; efree(p); {$ENDIF} end; -{$IFNDEF PHP7} -function zend_get_parameters(ht: integer; param_count: integer; Params: array of ppzval): integer; assembler; register; -asm - push esi - mov esi, ecx - mov ecx, [ebp+8] - cmp ecx, 0 - je @first - @toploop: - {$IFDEF VERSION6} - push [esi][ecx * 4] - {$ELSE} - push dword [esi][ecx * 4] - {$ENDIF} - loop @toploop - @first: - push dword [esi] - push edx - push eax - call ZendGetParameters - mov ecx, [ebp+8] - add ecx, 3 - @toploop2: - pop edx - loop @toploop2 - pop esi -end; -{$ENDIF} + procedure dispose_pzval_array(Params: pzval_array); var i : integer; @@ -3274,271 +3178,6 @@ constructor EPHP4DelphiException.Create(const Msg: zend_ustr); zend_error(E_PARSE, Error); end;} - -{$IFNDEF QUIET_LOAD} -procedure CheckZendErrors; -begin - if @zend_disable_function = nil then raise EPHP4DelphiException.Create('zend_disable_function'); - if @zend_disable_class = nil then raise EPHP4DelphiException.Create('zend_disable_class'); - if @zend_register_list_destructors_ex = nil then raise EPHP4DelphiException.Create('zend_register_list_destructors_ex'); - if @zend_register_resource = nil then raise EPHP4DelphiException.Create('zend_register_resource'); - if @zend_fetch_resource = nil then raise EPHP4DelphiException.Create('zend_fetch_resource'); - if @zend_list_insert = nil then raise EPHP4DelphiException.Create('zend_list_insert'); - {$IFNDEF PHP7} - if @_zend_list_addref = nil then raise EPHP4DelphiException.Create('zend_list_addref'); - if @_zend_list_delete = nil then raise EPHP4DelphiException.Create('zend_list_delete'); - if @_zend_list_find = nil then raise EPHP4DelphiException.Create('_zend_list_find'); - {$ENDIF} - if @zend_rsrc_list_get_rsrc_type = nil then raise EPHP4DelphiException.Create('zend_rsrc_list_get_rsrc_type'); - if @zend_fetch_list_dtor_id = nil then raise EPHP4DelphiException.Create('zend_fetch_list_dtor_id'); - if @zend_get_compiled_filename = nil then raise EPHP4DelphiException.Create('zend_get_compiled_filename'); - if @zend_get_compiled_lineno = nil then raise EPHP4DelphiException.Create('zend_get_compiled_lineno'); - if @tsrm_startup = nil then raise EPHP4DelphiException.Create('tsrm_startup'); - if @ts_allocate_id = nil then raise EPHP4DelphiException.Create('ts_allocate_id'); - if @ts_free_id = nil then raise EPHP4DelphiException.Create('ts_free_id'); - if @zend_strndup = nil then raise EPHP4DelphiException.Create('zend_strndup'); - - if @_emalloc = nil then raise EPHP4DelphiException.Create('_emalloc'); - if @_efree = nil then raise EPHP4DelphiException.Create('_efree'); - if @_ecalloc = nil then raise EPHP4DelphiException.Create('_ecalloc'); - if @_erealloc = nil then raise EPHP4DelphiException.Create('_erealloc'); - if @_estrdup = nil then raise EPHP4DelphiException.Create('_estrdup'); - if @_estrndup = nil then raise EPHP4DelphiException.Create('_estrndup'); - if @zend_set_memory_limit = nil then raise EPHP4DelphiException.Create('zend_set_memory_limit'); - if @start_memory_manager = nil then raise EPHP4DelphiException.Create('start_memory_manager'); - if @shutdown_memory_manager = nil then raise EPHP4DelphiException.Create('shutdown_memory_manager'); - {$IFDEF PHP4} - if @zend_hash_init = nil then raise EPHP4DelphiException.Create('zend_hash_init'); - if @zend_hash_init_ex = nil then raise EPHP4DelphiException.Create('zend_hash_init_ex'); - if @zend_hash_add_or_update = nil then raise EPHP4DelphiException.Create('zend_hash_add_or_update'); - if @zend_hash_quick_add_or_update = nil then raise EPHP4DelphiException.Create('zend_hash_quick_add_or_update'); - if @zend_hash_index_update_or_next_insert = nil then raise EPHP4DelphiException.Create('zend_hash_index_update_or_next_insert'); - if @zend_hash_merge = nil then raise EPHP4DelphiException.Create('zend_hash_merge'); - {$ENDIF} - - {$IFDEF PHP5} - if @_zend_hash_add_or_update = nil then raise EPHP4DelphiException.Create('_zend_hash_add_or_update'); - {$ENDIF} - - if @zend_hash_destroy = nil then raise EPHP4DelphiException.Create('zend_hash_destroy'); - if @zend_hash_clean = nil then raise EPHP4DelphiException.Create('zend_hash_clean'); - if @zend_hash_add_empty_element = nil then raise EPHP4DelphiException.Create('zend_hash_add_empty_element'); - if @zend_hash_graceful_destroy = nil then raise EPHP4DelphiException.Create('zend_hash_graceful_destroy'); - if @zend_hash_graceful_reverse_destroy = nil then raise EPHP4DelphiException.Create('zend_hash_graceful_reverse_destroy'); - if @zend_hash_apply = nil then raise EPHP4DelphiException.Create('zend_hash_apply'); - if @zend_hash_apply_with_argument = nil then raise EPHP4DelphiException.Create('zend_hash_apply_with_argument'); - if @zend_hash_reverse_apply = nil then raise EPHP4DelphiException.Create('zend_hash_reverse_apply'); - if @zend_hash_del_key_or_index = nil then raise EPHP4DelphiException.Create('zend_hash_del_key_or_index'); - if @zend_get_hash_value = nil then raise EPHP4DelphiException.Create('zend_get_hash_value'); - if @zend_hash_find = nil then raise EPHP4DelphiException.Create('zend_hash_find'); - if @zend_hash_quick_find = nil then raise EPHP4DelphiException.Create('zend_hash_quick_find'); - if @zend_hash_index_find = nil then raise EPHP4DelphiException.Create('zend_hash_index_find'); - if @zend_hash_exists = nil then raise EPHP4DelphiException.Create('zend_hash_exists'); - if @zend_hash_index_exists = nil then raise EPHP4DelphiException.Create('zend_hash_index_exists'); - {$IFDEF PHP7} - if @_zend_hash_add = nil then raise EPHP4DelphiException.Create('_zend_hash_add'); - if @_zend_hash_add_or_update = nil then raise EPHP4DelphiException.Create('_zend_hash_add_or_update'); - - if @zend_hash_index_findZval = nil then raise EPHP4DelphiException.Create('zend_hash_index_findZval'); - if @zend_symtable_findTest = nil then raise EPHP4DelphiException.Create('zend_symtable_findTest'); - if @zend_hash_index_existsZval = nil then raise EPHP4DelphiException.Create('zend_hash_index_existsZval'); - - {$ENDIF} - {$IFNDEF PHP7} - if @zend_hash_next_free_element = nil then raise EPHP4DelphiException.Create('zend_hash_next_free_element'); - {$ENDIF} - if @zend_hash_move_forward_ex = nil then raise EPHP4DelphiException.Create('zend_hash_move_forward_ex'); - if @zend_hash_move_backwards_ex = nil then raise EPHP4DelphiException.Create('zend_hash_move_backwards_ex'); - if @zend_hash_get_current_key_ex = nil then raise EPHP4DelphiException.Create('zend_hash_get_current_key_ex'); - if @zend_hash_get_current_key_type_ex = nil then raise EPHP4DelphiException.Create('zend_hash_get_current_key_type_ex'); - if @zend_hash_get_current_data_ex = nil then raise EPHP4DelphiException.Create('zend_hash_get_current_data_ex'); - if @zend_hash_internal_pointer_reset_ex = nil then raise EPHP4DelphiException.Create('zend_hash_internal_pointer_reset_ex'); - if @zend_hash_internal_pointer_end_ex = nil then raise EPHP4DelphiException.Create('zend_hash_internal_pointer_end_ex'); - if @zend_hash_copy = nil then raise EPHP4DelphiException.Create('zend_hash_copy'); - if @zend_hash_sort = nil then raise EPHP4DelphiException.Create('zend_hash_sort'); - if @zend_hash_compare = nil then raise EPHP4DelphiException.Create('zend_hash_compare'); - if @zend_hash_minmax = nil then raise EPHP4DelphiException.Create('zend_hash_minmax'); - if @zend_hash_num_elements = nil then raise EPHP4DelphiException.Create('zend_hash_num_elements'); - if @zend_hash_rehash = nil then raise EPHP4DelphiException.Create('zend_hash_rehash'); - if @zend_hash_func = nil then raise EPHP4DelphiException.Create('zend_hash_func'); - if @zend_get_constant = nil then raise EPHP4DelphiException.Create('zend_get_constant'); - if @zend_register_long_constant = nil then raise EPHP4DelphiException.Create('zend_register_long_constant'); - if @zend_register_double_constant = nil then raise EPHP4DelphiException.Create('zend_register_double_constant'); - if @zend_register_string_constant = nil then raise EPHP4DelphiException.Create('zend_register_string_constant'); - if @zend_register_stringl_constant = nil then raise EPHP4DelphiException.Create('zend_register_stringl_constant'); - if @zend_register_constant = nil then raise EPHP4DelphiException.Create('zend_register_constant'); - if @tsrm_shutdown = nil then raise EPHP4DelphiException.Create('tsrm_shutdown'); - if @ts_resource_ex = nil then raise EPHP4DelphiException.Create('ts_resource_ex'); - if @ts_free_thread = nil then raise EPHP4DelphiException.Create('ts_free_thread'); - if @zend_error = nil then raise EPHP4DelphiException.Create('zend_error'); - if @zend_error_cb = nil then raise EPHP4DelphiException.Create('zend_error_cb'); - if @zend_eval_string = nil then raise EPHP4DelphiException.Create('zend_eval_string'); - if @zend_make_compiled_string_description = nil then raise EPHP4DelphiException.Create('zend_make_compiled_string_description'); - - {$IFDEF PHP4} - if @_zval_dtor = nil then raise EPHP4DelphiException.Create('_zval_dtor'); - if @_zval_copy_ctor = nil then raise EPHP4DelphiException.Create('_zval_copy_ctor'); - {$ELSE} - if @_zval_dtor_func = nil then raise EPHP4DelphiException.Create('_zval_dtor_func'); - if @_zval_copy_ctor_func = nil then raise EPHP4DelphiException.Create('_zval_copy_ctor_func'); - {$ENDIF} - - if @zend_print_variable = nil then raise EPHP4DelphiException.Create('zend_print_variable'); - if @zend_stack_init = nil then raise EPHP4DelphiException.Create('zend_stack_init'); - if @zend_stack_push = nil then raise EPHP4DelphiException.Create('zend_stack_push'); - if @zend_stack_top = nil then raise EPHP4DelphiException.Create('zend_stack_top'); - if @zend_stack_del_top = nil then raise EPHP4DelphiException.Create('zend_stack_del_top'); - if @zend_stack_int_top = nil then raise EPHP4DelphiException.Create('zend_stack_int_top'); - if @zend_stack_is_empty = nil then raise EPHP4DelphiException.Create('zend_stack_is_empty'); - if @zend_stack_destroy = nil then raise EPHP4DelphiException.Create('zend_stack_destroy'); - if @zend_stack_base = nil then raise EPHP4DelphiException.Create('zend_stack_base'); - if @zend_stack_count = nil then raise EPHP4DelphiException.Create('zend_stack_count'); - if @zend_stack_apply = nil then raise EPHP4DelphiException.Create('zend_stack_apply'); - if @zend_stack_apply_with_argument = nil then raise EPHP4DelphiException.Create('zend_stack_apply_with_argument'); - if @_convert_to_string = nil then raise EPHP4DelphiException.Create('_convert_to_string'); - if @add_function = nil then raise EPHP4DelphiException.Create('add_function'); - if @sub_function = nil then raise EPHP4DelphiException.Create('sub_function'); - if @mul_function = nil then raise EPHP4DelphiException.Create('mul_function'); - if @div_function = nil then raise EPHP4DelphiException.Create('div_function'); - if @mod_function = nil then raise EPHP4DelphiException.Create('mod_function'); - if @boolean_xor_function = nil then raise EPHP4DelphiException.Create('boolean_xor_function'); - if @boolean_not_function = nil then raise EPHP4DelphiException.Create('boolean_not_function'); - if @bitwise_not_function = nil then raise EPHP4DelphiException.Create('bitwise_not_function'); - if @bitwise_or_function = nil then raise EPHP4DelphiException.Create('bitwise_or_function'); - if @bitwise_and_function = nil then raise EPHP4DelphiException.Create('bitwise_and_function'); - if @bitwise_xor_function = nil then raise EPHP4DelphiException.Create('bitwise_xor_function'); - if @shift_left_function = nil then raise EPHP4DelphiException.Create('shift_left_function'); - if @shift_right_function = nil then raise EPHP4DelphiException.Create('shift_right_function'); - if @concat_function = nil then raise EPHP4DelphiException.Create('concat_function'); - if @is_equal_function = nil then raise EPHP4DelphiException.Create('is_equal_function'); - if @is_identical_function = nil then raise EPHP4DelphiException.Create('is_identical_function'); - if @is_not_identical_function = nil then raise EPHP4DelphiException.Create('is_not_identical_function'); - if @is_not_equal_function = nil then raise EPHP4DelphiException.Create('is_not_equal_function'); - if @is_smaller_function = nil then raise EPHP4DelphiException.Create('is_smaller_function'); - if @is_smaller_or_equal_function = nil then raise EPHP4DelphiException.Create('is_smaller_or_equal_function'); - if @increment_function = nil then raise EPHP4DelphiException.Create('increment_function'); - if @decrement_function = nil then raise EPHP4DelphiException.Create('decrement_function'); - if @convert_scalar_to_number = nil then raise EPHP4DelphiException.Create('convert_scalar_to_number'); - if @convert_to_long = nil then raise EPHP4DelphiException.Create('convert_to_long'); - if @convert_to_double = nil then raise EPHP4DelphiException.Create('convert_to_double'); - if @convert_to_long_base = nil then raise EPHP4DelphiException.Create('convert_to_long_base'); - if @convert_to_null = nil then raise EPHP4DelphiException.Create('convert_to_null'); - if @convert_to_boolean = nil then raise EPHP4DelphiException.Create('convert_to_boolean'); - if @convert_to_array = nil then raise EPHP4DelphiException.Create('convert_to_array'); - if @convert_to_object = nil then raise EPHP4DelphiException.Create('convert_to_object'); - if @add_char_to_string = nil then raise EPHP4DelphiException.Create('add_char_to_string'); - if @add_string_to_string = nil then raise EPHP4DelphiException.Create('add_string_to_string'); - if @zend_string_to_double = nil then raise EPHP4DelphiException.Create('zend_string_to_double'); - if @zval_is_true = nil then raise EPHP4DelphiException.Create('zval_is_true'); - if @compare_function = nil then raise EPHP4DelphiException.Create('compare_function'); - if @numeric_compare_function = nil then raise EPHP4DelphiException.Create('numeric_compare_function'); - if @string_compare_function = nil then raise EPHP4DelphiException.Create('string_compare_function'); - if @zend_str_tolower = nil then raise EPHP4DelphiException.Create('zend_str_tolower'); - if @zend_binary_zval_strcmp = nil then raise EPHP4DelphiException.Create('zend_binary_zval_strcmp'); - if @zend_binary_zval_strncmp = nil then raise EPHP4DelphiException.Create('zend_binary_zval_strncmp'); - if @zend_binary_zval_strcasecmp = nil then raise EPHP4DelphiException.Create('zend_binary_zval_strcasecmp'); - if @zend_binary_zval_strncasecmp = nil then raise EPHP4DelphiException.Create('zend_binary_zval_strncasecmp'); - if @zend_binary_strcmp = nil then raise EPHP4DelphiException.Create('zend_binary_strcmp'); - if @zend_binary_strncmp = nil then raise EPHP4DelphiException.Create('zend_binary_strncmp'); - if @zend_binary_strcasecmp = nil then raise EPHP4DelphiException.Create('zend_binary_strcasecmp'); - if @zend_binary_strncasecmp = nil then raise EPHP4DelphiException.Create('zend_binary_strncasecmp'); - if @zendi_smart_strcmp = nil then raise EPHP4DelphiException.Create('zendi_smart_strcmp'); - if @zend_compare_symbol_tables = nil then raise EPHP4DelphiException.Create('zend_compare_symbol_tables'); - if @zend_compare_arrays = nil then raise EPHP4DelphiException.Create('zend_compare_arrays'); - if @zend_compare_objects = nil then raise EPHP4DelphiException.Create('zend_compare_objects'); - if @zend_atoi = nil then raise EPHP4DelphiException.Create('zend_atoi'); - if @get_active_function_name = nil then raise EPHP4DelphiException.Create('get_active_function_name'); - if @zend_get_executed_filename = nil then raise EPHP4DelphiException.Create('zend_get_executed_filename'); - if @zend_set_timeout = nil then raise EPHP4DelphiException.Create('zend_set_timeout'); - if @zend_unset_timeout = nil then raise EPHP4DelphiException.Create('zend_unset_timeout'); - if @zend_timeout = nil then raise EPHP4DelphiException.Create('zend_timeout'); - if @zend_highlight = nil then raise EPHP4DelphiException.Create('zend_highlight'); - if @zend_strip = nil then raise EPHP4DelphiException.Create('zend_strip'); - if @highlight_file = nil then raise EPHP4DelphiException.Create('highlight_file'); - if @highlight_string = nil then raise EPHP4DelphiException.Create('highlight_string'); - if @zend_html_putc = nil then raise EPHP4DelphiException.Create('zend_html_putc'); - if @zend_html_puts = nil then raise EPHP4DelphiException.Create('zend_html_puts'); - {$IFDEF PHP7} - if @zend_parse_parameters_throw = nil then EPHP4DelphiException.Create('zend_parse_parameters_throw'); - if @ZvalGetArgs = nil then EPHP4DelphiException.Create('ZvalGetArgs'); - if @_zend_get_parameters_array_ex = nil then EPHP4DelphiException.Create('_zend_get_parameters_array_ex'); - {$ELSE} - if @zend_indent = nil then raise EPHP4DelphiException.Create('zend_indent'); - {$ENDIF} - if @_zend_get_parameters_array_ex = nil then raise EPHP4DelphiException.Create('_zend_get_parameters_array_ex'); - if @zend_ini_refresh_caches = nil then raise EPHP4DelphiException.Create('zend_ini_refresh_caches'); - if @zend_alter_ini_entry = nil then raise EPHP4DelphiException.Create('zend_alter_ini_entry'); - if @zend_restore_ini_entry = nil then raise EPHP4DelphiException.Create('zend_restore_ini_entry'); - if @zend_ini_long = nil then raise EPHP4DelphiException.Create('zend_ini_long'); - if @zend_ini_double = nil then raise EPHP4DelphiException.Create('zend_ini_double'); - if @zend_ini_string = nil then raise EPHP4DelphiException.Create('zend_ini_string'); - if @compile_string = nil then raise EPHP4DelphiException.Create('compile_string'); - if @execute = nil then raise EPHP4DelphiException.Create('execute'); - if @zend_wrong_param_count = nil then raise EPHP4DelphiException.Create('zend_wrong_param_count'); - if @add_property_long_ex = nil then raise EPHP4DelphiException.Create('add_property_long_ex'); - if @add_property_null_ex = nil then raise EPHP4DelphiException.Create('add_property_null_ex'); - if @add_property_bool_ex = nil then raise EPHP4DelphiException.Create('add_property_bool_ex'); - if @add_property_resource_ex = nil then raise EPHP4DelphiException.Create('add_property_resource_ex'); - if @add_property_double_ex = nil then raise EPHP4DelphiException.Create('add_property_double_ex'); - if @add_property_string_ex = nil then raise EPHP4DelphiException.Create('add_property_string_ex'); - if @add_property_stringl_ex = nil then raise EPHP4DelphiException.Create('add_property_stringl_ex'); - if @add_property_zval_ex = nil then raise EPHP4DelphiException.Create('add_property_zval_ex'); - if @call_user_function = nil then raise EPHP4DelphiException.Create('call_user_function'); - {$IFNDEF P_CUT} - if @call_user_function_ex = nil then raise EPHP4DelphiException.Create('call_user_function_ex'); - {$ENDIF} - if @add_assoc_long_ex = nil then raise EPHP4DelphiException.Create('add_assoc_long_ex'); - if @add_assoc_null_ex = nil then raise EPHP4DelphiException.Create('add_assoc_null_ex'); - if @add_assoc_bool_ex = nil then raise EPHP4DelphiException.Create('add_assoc_bool_ex'); - if @add_assoc_resource_ex = nil then raise EPHP4DelphiException.Create('add_assoc_resource_ex'); - if @add_assoc_double_ex = nil then raise EPHP4DelphiException.Create('add_assoc_double_ex'); - if @add_assoc_string_ex = nil then raise EPHP4DelphiException.Create('add_assoc_string_ex'); - if @add_assoc_stringl_ex = nil then raise EPHP4DelphiException.Create('add_assoc_stringl_ex'); - if @add_assoc_zval_ex = nil then raise EPHP4DelphiException.Create('add_assoc_zval_ex'); - if @add_index_long = nil then raise EPHP4DelphiException.Create('add_index_long'); - if @add_index_null = nil then raise EPHP4DelphiException.Create('add_index_null'); - if @add_index_bool = nil then raise EPHP4DelphiException.Create('add_index_bool'); - if @add_index_resource = nil then raise EPHP4DelphiException.Create('add_index_resource'); - if @add_index_double = nil then raise EPHP4DelphiException.Create('add_index_double'); - if @add_index_string = nil then raise EPHP4DelphiException.Create('add_index_string'); - if @add_index_stringl = nil then raise EPHP4DelphiException.Create('add_index_stringl'); - if @add_index_zval = nil then raise EPHP4DelphiException.Create('add_index_zval'); - if @add_next_index_long = nil then raise EPHP4DelphiException.Create('add_next_index_long'); - if @add_next_index_null = nil then raise EPHP4DelphiException.Create('add_next_index_null'); - if @add_next_index_bool = nil then raise EPHP4DelphiException.Create('add_next_index_bool'); - if @add_next_index_resource = nil then raise EPHP4DelphiException.Create('add_next_index_resource'); - if @add_next_index_double = nil then raise EPHP4DelphiException.Create('add_next_index_double'); - if @add_next_index_string = nil then raise EPHP4DelphiException.Create('add_next_index_string'); - if @add_next_index_stringl = nil then raise EPHP4DelphiException.Create('add_next_index_stringl'); - if @add_next_index_zval = nil then raise EPHP4DelphiException.Create('add_next_index_zval'); - if @add_get_assoc_string_ex = nil then raise EPHP4DelphiException.Create('add_get_assoc_string_ex'); - if @add_get_assoc_stringl_ex = nil then raise EPHP4DelphiException.Create('add_get_assoc_stringl_ex'); - if @add_get_index_long = nil then raise EPHP4DelphiException.Create('add_get_index_long'); - if @add_get_index_double = nil then raise EPHP4DelphiException.Create('add_get_index_double'); - if @add_get_index_string = nil then raise EPHP4DelphiException.Create('add_get_index_string'); - if @add_get_index_stringl = nil then raise EPHP4DelphiException.Create('add_get_index_stringl'); - if @_array_init = nil then raise EPHP4DelphiException.Create('_array_init'); - if @_object_init = nil then raise EPHP4DelphiException.Create('_object_init'); - if @_object_init_ex = nil then raise EPHP4DelphiException.Create('_object_init_ex'); - if @_object_and_properties_init = nil then raise EPHP4DelphiException.Create('_object_and_properties_init'); - if @zend_register_internal_class = nil then raise EPHP4DelphiException.Create('zend_register_internal_class'); - if @zend_register_internal_class_ex = nil then raise EPHP4DelphiException.Create('zend_register_internal_class_ex'); - if @zend_startup_module = nil then raise EPHP4DelphiException.Create('zend_startup_module'); - if @zend_startup_module_ex = nil then raise EPHP4DelphiException.Create('zend_startup_module_ex'); - if @zend_register_module_ex = nil then raise EPHP4DelphiException.Create('zend_register_module_ex'); - if @zend_register_internal_module = nil then raise EPHP4DelphiException.Create('zend_register_internal_module'); - if @zend_startup_modules = nil then raise EPHP4DelphiException.Create('zend_startup_modules'); - if @zend_collect_module_handlers = nil then raise EPHP4DelphiException.Create('zend_collect_module_handlers'); - - if @get_zend_version = nil then raise EPHP4DelphiException.Create('get_zend_version'); - if @zend_make_printable_zval = nil then raise EPHP4DelphiException.Create('zend_make_printable_zval'); - if @zend_print_zval = nil then raise EPHP4DelphiException.Create('zend_print_zval'); - if @zend_print_zval_r = nil then raise EPHP4DelphiException.Create('zend_print_zval_r'); - if @zend_output_debug_string = nil then raise EPHP4DelphiException.Create('zend_output_debug_string'); - if @ZendGetParameters = nil then raise EPHP4DelphiException.Create('zend_get_parameters'); -end; -{$ENDIF} - function zend_hash_get_current_data(ht: {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; pData: Pointer): Integer; cdecl; begin result := zend_hash_get_current_data_ex(ht, pData, cardinal(nil)); @@ -3559,13 +3198,6 @@ function tsrmls_fetch : pointer; result := ts_resource_ex(0, nil); end; -{$IFDEF PHP4} -function zval_copy_ctor(val : pzval) : integer; -begin - result := _zval_copy_ctor(val, nil, 0); -end; -{$ENDIF} - function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; count : integer; function_table : {$IFDEF PHP7} Pzend_array {$ELSE} PHashTable{$ENDIF}; TSRMLS_DC : pointer) : integer; var i : integer; @@ -3669,30 +3301,41 @@ function zend_register_functions(functions : {$IFDEF PHP7}P_zend_function_entry{ end; - +function __asm_fetchval +{$IFDEF CPUX64} +(val_id: int64; tsrmls_dc_p: pointer) +{$ELSE} +(val_id: integer; tsrmls_dc_p: pointer) +{$ENDIF} +: pointer; assembler; register; +{$IFDEF CPUX64} +asm + mov rcx, val_id + mov rdx, dword64 ptr tsrmls_dc_p + mov rax, dword64 ptr [rdx] + mov rcx, dword64 ptr [rax+rcx*8-8] + mov Result, rcx +end; +{$ELSE} +asm + mov ecx, val_id + mov edx, dword ptr tsrmls_dc_p + mov eax, dword ptr [edx] + mov ecx, dword ptr [eax+ecx*4-4] + mov Result, ecx +end; +{$ENDIF} function GetGlobalResource(resource_name: AnsiString) : pointer; var global_id : pointer; - global_value : integer; - global_ptr : pointer; - tsrmls_dc : pointer; begin Result := nil; try global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - tsrmls_dc := tsrmls_fetch; - global_value := integer(global_id^); - asm - mov ecx, global_value - mov edx, dword ptr tsrmls_dc - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov global_ptr, ecx - end; - Result := global_ptr; + Result := __asm_fetchval(integer(global_id^), tsrmls_fetch); end; except Result := nil; @@ -3702,23 +3345,13 @@ function GetGlobalResource(resource_name: AnsiString) : pointer; function GetGlobalResourceDC(resource_name: AnsiString;TSRMLS_DC:pointer) : pointer; var global_id : pointer; - global_value : integer; - global_ptr : pointer; begin Result := nil; try global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - global_value := integer(global_id^); - asm - mov ecx, global_value - mov edx, dword ptr TSRMLS_DC - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov global_ptr, ecx - end; - Result := global_ptr; + Result := __asm_fetchval(integer(global_id^), TSRMLS_DC); end; except Result := nil; @@ -3763,6 +3396,20 @@ procedure copy_zend_constant(C: PZendConstant); cdecl; end; function object_init(arg: pzval; ce: pzend_class_entry; TSRMLS_DC : pointer) : integer; cdecl; assembler; +{$IFDEF CPUX64} +asm + mov rax, [rsp + 32] + mov rcx, [rsp + 24] + mov rdx, [rsp + 16] + pop rbp + push rax + push rcx + push rdx + call _object_init_ex + add rsp, $0c + ret +end; +{$ELSE} asm mov eax, [esp + 16] mov ecx, [esp + 12] @@ -3775,6 +3422,7 @@ function object_init(arg: pzval; ce: pzend_class_entry; TSRMLS_DC : pointer) : i add esp, $0c ret end; +{$ENDIF} function Z_LVAL(z : pzval) : longint; @@ -3948,6 +3596,79 @@ function Z_STRWVAL(z : pzval) : String; end; end; +function Z_CHAR(z: PZval) : zend_uchar; +var S: zend_ustr; +begin +Result := #0; + if z = nil then + exit; + + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then + S := z.value.str.val + else + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of + IS_LONG: S := IntToStr(z.value.lval); + IS_DOUBLE: S := FloatToStr(z.value.dval); + IS_BOOL: if z.value.lval = 0 then S := '0' else S := '1'; + end; + SetLength(S,1); + Result := zend_uchar(S[1]); +end; +function Z_ACHAR(z: PZVAL): AnsiChar; +var S: AnsiString; +begin +Result := #0; + if z = nil then + exit; + + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then + S := z.value.str.val + else + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of + IS_LONG: S := IntToStr(z.value.lval); + IS_DOUBLE: S := FloatToStr(z.value.dval); + IS_BOOL: if z.value.lval = 0 then S := '0' else S := '1'; + end; + SetLength(S,1); + Result := AnsiChar(S[1]); +end; +function Z_WCHAR(z: PZVAL): WideChar; +var S: WideString; +begin +Result := #0; + if z = nil then + exit; + + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then + S := z.value.str.val + else + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of + IS_LONG: S := IntToStr(z.value.lval); + IS_DOUBLE: S := FloatToStr(z.value.dval); + IS_BOOL: if z.value.lval = 0 then S := '0' else S := '1'; + end; + SetLength(S,1); + Result := WideChar(S[1]); +end; +function Z_UCHAR(z: PZVAL): UTF8Char; +var S: UTF8String; +begin +Result := #0; + if z = nil then + exit; + + if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then + S := z.value.str.val + else + case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of + IS_LONG: S := IntToStr(z.value.lval); + IS_DOUBLE: S := FloatToStr(z.value.dval); + IS_BOOL: if z.value.lval = 0 then S := '0' else S := '1'; + end; + SetLength(S,1); + Result := Utf8Char(S[1]); +end; + function Z_STRLEN(z : pzval) : longint; begin Result := Length(Z_STRVAL(z)); @@ -3968,15 +3689,14 @@ function Z_OBJ_HT(z : pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ Result := z.value.obj.handlers; end; -function Z_OBJPROP(z : pzval) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; +function Z_OBJPROP(z : pzval;TSRMLS_DC:pointer=nil) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; {$IFDEF PHP7} begin Result := Z_OBJ_HT(z)^.get_properties(z); end; {$ELSE} -var - TSRMLS_DC : pointer; begin + if TSRMLS_DC = nil then TSRMLS_DC := ts_resource_ex(0, nil); Result := Z_OBJ_HT(z)^.get_properties(@z, TSRMLS_DC); end; diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index b48329a..0de67d3 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -478,12 +478,27 @@ interface { Common Types } type - zend_uint = uint; + CharPtr = + {$IFDEF VERSION12} + WideChar + {$ELSE} + AnsiChar + {$ENDIF}; + {$IFDEF CPUX64} + IntPtr = Int64; + UIntPtr = UInt64; + ULongPtr = ULong64; + {$ELSE} + IntPtr = Longint; + UIntPtr = LongWord; + ULongPtr = ULong; + {$ENDIF} + zend_uint = UIntPtr; zend_bool = boolean; zend_uchar = {$IFDEF PHP_UNICE}Utf8Char{$ELSE}AnsiChar{$ENDIF}; zend_ustr = {$IFDEF PHP_UNICE}Utf8String{$ELSE}AnsiString{$ENDIF}; - zend_ulong = ulong; - zend_long = integer; + zend_ulong = ULongPtr; + zend_long = IntPtr; zend_pchar = {$IFDEF PHP_UNICE}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; zend_pstr = {$IFDEF PHP_UNICE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; {$IFDEF PHP7} @@ -800,23 +815,7 @@ zend_function = record Pzend_class_entry = ^Tzend_class_entry; PPZend_class_entry = ^PZend_class_entry; {$ENDIF} - {$IFDEF PHP4} - Tzend_class_entry = - record - _type: zend_uchar; - name: zend_pchar; - name_length: uint; - parent: pointer; - refcount: pointer; - constants_updated: boolean; - function_table: THashTable; - default_properties: THashTable; - builtin_functions: pointer; - handle_function_call: pointer; - handle_property_get: pointer; - handle_property_set: pointer; - end; - {$ELSE} + {$IFNDEF PHP7} Tzend_class_entry = record _type : zend_uchar; @@ -879,7 +878,7 @@ Tzend_class_entry = record module : pointer; end; {$ENDIF} - {$ENDIF} + {$IFNDEF PHP7} //P_zend_object_handlers = ^_zend_object_handlers; Pzend_Object = ^Tzend_object; @@ -912,7 +911,7 @@ _zend_object = record Tzend_object_get_classname = function(_object : pointer; class_name : pointer; class_name_len : pointer; p : integer; TSRMLS_DC : pointer) : integer; cdecl; {$IFNDEF PHP7} - zend_object_handlers = record + _zend_object_handlers = record // general object functions add_ref : pointer; del_ref : pointer; @@ -946,7 +945,8 @@ zend_object_handlers = record {$ENDIF} zend_object_handle = cardinal; {$IFNDEF PHP7} - pzend_object_handlers = ^zend_object_handlers; + zend_object_handlers = _zend_object_handlers; + pzend_object_handlers = ^_zend_object_handlers; _zend_object_value = record @@ -969,24 +969,10 @@ zvalue_value = record len: integer; end); 3: (ht: PHashTable); - {$IFDEF PHP4} - 4: (obj: Tzend_Object); - {$ELSE} 4 : (obj : _zend_object_value); - {$ENDIF} end; pppzval = ^ppzval; ppzval = ^pzval; - {$IFDEF PHP4} - Pzval = ^zval; - zval = record - value: zvalue_value; - _type: Byte; - is_ref: Byte; - refcount: Smallint; - end; - Tzval = zval; - {$ELSE} pzval = ^zval; zval = record @@ -995,14 +981,14 @@ zval = record _type : byte; is_ref : byte; end; - {$ENDIF} + {$ENDIF} ppzval_array = ^pzval_array; + pzval_array = array of ppzval; pzval_array_ex = array of pzval; - type PZend_rsrc_list_entry = ^zend_rsrc_list_entry; zend_rsrc_list_entry = record @@ -1088,7 +1074,7 @@ _zend_stream = record PZendFileHandle = ^TZendFileHandle; zend_file_handle = record - {$IFDEF PHP530} + {$IF Defined(PHP530) or Defined(PHP540) or Defined(PHP550) or Defined(PHP560) or Defined(PHP700)} _type : zend_stream_type; {$ELSE} _type: uchar; @@ -1098,22 +1084,19 @@ _zend_stream = record handle: record case Integer of - 1: - ( - fd: Integer; - ); - 2: - ( - fp: pointer; - ); - {$IFDEF PHP5} - 3 : - ( - stream : TZendStream; - ); + {$IFDEF PHP7} + 0:( fd: Integer; ); + 1:( fp: pointer; ); + 2 : ( stream : TZendStream; ); + {$ELSE} + 1:( fd: Integer; ); + 2:( fp: pointer; ); + {$IFDEF PHP5} + 3 : ( stream : TZendStream; ); + {$ENDIF} {$ENDIF} end; - free_filename: shortint; + free_filename: {$IFDEF PHP7}byte{$ELSE}shortint{$ENDIF}; end; TZendFileHandle = zend_file_handle; @@ -1180,13 +1163,9 @@ _zend_arg_info = record zend_function_entry = record fname: zend_pchar; handler: pointer; - {$IFDEF PHP4} - func_arg_types: Pbyte; - {$ELSE} arg_info : PZendArgInfo; num_args : zend_uint; flags : zend_uint; - {$ENDIF} end; Tzend_function_entry = zend_function_entry; TZendFunctionEntry = zend_function_entry; @@ -1502,21 +1481,10 @@ zend_executor_globals = record symtable_cache_ptr : ^PHashTable; opline_ptr : pointer; - - {$IFDEF PHP4} - current_execute_data : pointer; - {$ENDIF} - active_symbol_table : PHashTable; symbol_table : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; // main symbol table - included_files : {$IFDEF PHP7}HashTable{$ELSE}THashTable{$ENDIF}; // files already included */ - - {$IFDEF PHP4} - bailout : jump_buf; - {$ELSE} bailout : p_jump_buf; - {$ENDIF} error_reporting : integer; orig_error_reporting : integer; @@ -1545,10 +1513,6 @@ zend_executor_globals = record {$ENDIF} {$ENDIF} - {$IFDEF PHP4} - bailout_set : zend_bool; - {$ENDIF} - full_tables_cleanup : zend_bool; {$IFDEF PHP5} ze1_compatibility_mode : zend_bool; diff --git a/Source/php4AppUnit.pas b/Source/php4AppUnit.pas index 71e903b..459d395 100644 --- a/Source/php4AppUnit.pas +++ b/Source/php4AppUnit.pas @@ -35,9 +35,7 @@ TPHPInfoBlock = class private FBuffer : zend_ustr; FVarList : TStringList; - {$IFDEF PHP5} FVirtualStream : TMemoryStream; - {$ENDIF} procedure SetVarList(AValue : TStringList); public constructor Create; virtual; @@ -190,26 +188,23 @@ procedure PrepareStartup; php_delphi_module.module_shutdown_func := nil; php_delphi_module.info_func := @php_info_delphi; php_delphi_module.version := '7.4'; - {$IFDEF PHP4} - php_delphi_module.global_startup_func := nil; - {$ENDIF} php_delphi_module.request_shutdown_func := nil; - {$IFDEF PHP5} + {$IFNDEF PHP520} php_delphi_module.global_id := 0; {$ENDIF} - {$ENDIF} + php_delphi_module.module_started := 0; php_delphi_module._type := 0; php_delphi_module.handle := nil; php_delphi_module.module_number := 0; {$IFDEF PHP530} - {$IFNDEF COMPILER_VC9} - php_delphi_module.build_id := strdup(zend_pchar(ZEND_MODULE_BUILD_ID)); - {$ELSE} - php_delphi_module.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); - {$ENDIF} + {$IFNDEF COMPILER_VC9} + php_delphi_module.build_id := strdup(zend_pchar(ZEND_MODULE_BUILD_ID)); + {$ELSE} + php_delphi_module.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); + {$ENDIF} {$ENDIF} end; @@ -228,18 +223,7 @@ procedure PrepareResult(RequestID : integer; TSRMLS_D : pointer); begin InfoBlock := TPHPInfoBlock(RequestID); - - {$IFDEF PHP4} - ht := GetSymbolsTable - {$ELSE} - begin - EG := GetExecutorGlobals; - if Assigned(EG) then - ht := @EG.symbol_table - else - ht := nil; - end ; - {$ENDIF} + ht := GetSymbolsTable; if Assigned(ht) then begin @@ -285,8 +269,7 @@ function ExecutePHP(RequestID : integer; FileName : zend_pchar) : integer; stdca file_handle.opened_path := nil; file_handle.free_filename := 0; file_handle.handle.fp := nil; - - PG(TSRMLS_D)^.register_globals := true; + GetPHPGlobals(TSRMLS_D)^.register_globals := true; gl := GetSAPIGlobals; TPHPInfoBlock(RequestID).FBuffer := ''; gl^.server_context := pointer(RequestID); @@ -295,9 +278,8 @@ function ExecutePHP(RequestID : integer; FileName : zend_pchar) : integer; stdca php_request_startup(TSRMLS_D); result := php_execute_script(@file_handle, TSRMLS_D); - {$IFDEF PHP5} zend_destroy_file_handle(@file_handle, TSRMLS_D); - {$ENDIF} + PrepareResult(RequestID, TSRMLS_D); php_request_shutdown(nil); except @@ -477,7 +459,7 @@ function ExecuteCode(RequestID : integer; ACode : zend_pchar) : integer; stdcall TSRMLS_D := ts_resource_ex(0, nil); - PG(TSRMLS_D)^.register_globals := true; + GetPHPGlobals(TSRMLS_D)^.register_globals := true; gl := GetSAPIGlobals; TPHPInfoBlock(RequestID).FBuffer := ''; gl^.server_context := pointer(RequestID); @@ -645,19 +627,15 @@ constructor TPHPInfoBlock.Create; inherited Create; FBuffer := ''; FVarList := TStringList.Create; - {$IFDEF PHP5} FVirtualStream := TMemoryStream.Create; - {$ENDIF} end; destructor TPHPInfoBlock.Destroy; begin FBuffer := ''; FVarList.Free; - {$IFDEF PHP5} if FVirtualStream <> nil then FreeAndNil(FVirtualStream); - {$ENDIF} inherited; end; @@ -733,7 +711,9 @@ procedure StopEngine; try delphi_sapi_module.shutdown(@delphi_sapi_module); sapi_shutdown; + {$IF not Defined(PHP550) and not Defined(PHP560)} tsrm_shutdown(); + {$ENDIF} except end; end; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 35a7d96..33ffd04 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -94,9 +94,10 @@ TpsvCustomPHP = class(TPHPComponent) FRequestType : TPHPRequestType; FOnReadResult : TPHPReadResultEvent; FContentType: zend_ustr; - {$IFDEF PHP5} - FVirtualStream : TMemoryStream; + {$IFDEF sCPUX64} + FCode: zend_ustr; {$ENDIF} + FVirtualStream : TStringStream; procedure SetVariables(Value : TPHPVariables); procedure SetHeaders(Value : TPHPHeaders); function GetVariableCount: integer; @@ -108,7 +109,7 @@ TpsvCustomPHP = class(TPHPComponent) procedure PrepareVariables; virtual; function RunTime : boolean; function GetThreadSafeResourceManager : pointer; - function CreateVirtualFile(ACode : zend_ustr) : boolean; + function CreateVirtualFile(A_code: zend_ustr) : boolean; procedure CloseVirtualFile; {$IFDEF PHP4} property VirtualCode : string read FVirtualCode; @@ -865,10 +866,10 @@ procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; else error_type_str := 'Unknown error'; end; - {$IFDEF P_CUT} - ShowMessage(zend_pchar( + {$IFDEF CUTTED_PHP7dll} + ShowMessage( {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} - ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno]))); + ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])); {$ELSE} php_log_err(zend_pchar( {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} @@ -990,7 +991,7 @@ constructor TpsvCustomPHP.Create(AOwner: TComponent); {$IFDEF PHP4} FVirtualCode := ''; {$ELSE} - FVirtualStream := TMemoryStream.Create; + FVirtualStream := TStringStream.Create; {$ENDIF} end; @@ -1031,6 +1032,9 @@ function TpsvCustomPHP.Execute : zend_ustr; {$IFDEF PHP5} ZendStream : TZendStream; {$ENDIF} + {$IFDEF sCPUX64} + z: pzval; + {$ENDIF} begin if not EngineActive then @@ -1062,27 +1066,24 @@ function TpsvCustomPHP.Execute : zend_ustr; if not FileExists(FFileName) then raise Exception.CreateFmt('File %s does not exists', [FFileName]); end; - StartupRequest; - ZeroMemory(@file_handle, sizeof(zend_file_handle)); - + {$IFNDEF sCPUX64} if FUseMapping then begin {$IFDEF PHP5} ZeroMemory(@ZendStream, sizeof(ZendStream)); ZendStream.reader := delphi_stream_reader; ZendStream.closer := delphi_stream_closer; - {$IFDEF PHP530} - ZendStream.fsizer := delphi_stream_fsizer; - {$ELSE} - {$IFDEF PHP510} - ZendStream.fteller := delphi_stream_teller; - {$ENDIF} - ZendStream.interactive := 0; - {$ENDIF} - + {$IFDEF PHP530} + ZendStream.fsizer := delphi_stream_fsizer; + {$ELSE} + {$IFDEF PHP510} + ZendStream.fteller := delphi_stream_teller; + {$ENDIF} + ZendStream.interactive := 0; + {$ENDIF} ZendStream.handle := FVirtualStream; file_handle._type := ZEND_HANDLE_STREAM; @@ -1101,6 +1102,10 @@ function TpsvCustomPHP.Execute : zend_ustr; {$ENDIF} end else + {$ENDIF} + {$IFDEF CPUX64} + if not FUseMapping then + {$ENDIF} begin file_handle._type := ZEND_HANDLE_FILENAME; file_handle.filename := zend_pchar(FFileName); @@ -1109,7 +1114,21 @@ function TpsvCustomPHP.Execute : zend_ustr; end; try - php_execute_script(@file_handle, TSRMLS_D); + begin + //ShowMessage('php_execute_script'); + {$IFDEF CPUX64} + if FUseMapping then + begin + ShowMessage('eval'); + z := ALLOC_ZVAL; + INIT_PZVAL(z); + z^._type := IS_STRING; + zend_eval_string(zend_pchar(FCode), z, 'SAPI execution', TSRMLS_D); + end + else + {$ENDIF} + PHPAPI.php_execute_script(@file_handle, TSRMLS_D); + end except FBuffer.Clear; try @@ -1147,7 +1166,7 @@ function TpsvCustomPHP.Execute : zend_ustr; end; end; -function TpsvCustomPHP.RunCode(ACode : zend_ustr) : zend_ustr; +function TpsvCustomPHP.RunCode(Acode : zend_ustr) : zend_ustr; begin if not EngineActive then begin @@ -1158,19 +1177,26 @@ function TpsvCustomPHP.RunCode(ACode : zend_ustr) : zend_ustr; ClearHeaders; ClearBuffer; FUseMapping := true; + try if FUseDelimiters then begin if Pos('', [ACode]); end; + {$IFDEF CPUX64} + FCode := Acode; + {$ELSE} if not CreateVirtualFile(ACode) then begin Result := ''; Exit; end; + {$ENDIF} Result := Execute; + {$IFNDEF CPUX64} CloseVirtualFile; + {$ENDIF} finally FUseMapping := false; end; @@ -1208,25 +1234,12 @@ procedure TpsvCustomPHP.PrepareResult; data: ^ppzval; cnt : integer; variable : pzval; - {$IFDEF PHP5} - EG : pzend_executor_globals; - {$ENDIF} begin if FVariables.Count = 0 then Exit; if FExecuteMethod = emServer then - {$IFDEF PHP4} ht := GetSymbolsTable - {$ELSE} - begin - EG := GetExecutorGlobals; - if Assigned(EG) then - ht := @EG.symbol_table - else - ht := nil; - end - {$ENDIF} else ht := GetTrackHash('_GET'); if Assigned(ht) then @@ -1278,19 +1291,22 @@ procedure TpsvCustomPHP.StartupRequest; gl := GetSAPIGlobals; gl^.server_context := Self; - + //ShowMessage('TpsvCustomPHP.StartupRequest -- RegisterGlobals'); if PHPEngine.RegisterGlobals then GetPHPGlobals(TSRMLS_D)^.register_globals := true; - + //ShowMessage('TpsvCustomPHP.StartupRequest -- Try'); try + //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnReadPost'); if Assigned(FOnReadPost) then FOnReadPost(Self, FPostStream); - + //ShowMessage('TpsvCustomPHP.StartupRequest -- zend_alter_ini_entry'); zend_alter_ini_entry('max_execution_time', 19, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME); + //ShowMessage('TpsvCustomPHP.StartupRequest -- php_request_startup'); php_request_startup(TSRMLS_D); + //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnRequestStartup'); if Assigned(FOnRequestStartup) then FOnRequestStartup(Self); - + //ShowMessage('TpsvCustomPHP.StartupRequest --'); FSessionActive := true; except FSessionActive := false; @@ -1406,7 +1422,7 @@ procedure TpsvCustomPHP.CloseVirtualFile; {$ENDIF} end; -function TpsvCustomPHP.CreateVirtualFile(ACode : zend_ustr): boolean; +function TpsvCustomPHP.CreateVirtualFile(A_code : zend_ustr): boolean; {$IFDEF PHP4} var _handles : array[0..1] of THandle; @@ -1422,7 +1438,7 @@ function TpsvCustomPHP.CreateVirtualFile(ACode : zend_ustr): boolean; Exit; {empty buffer was provided} end; - FVirtualCode := ACode; + FVirtualCode := A_code; if pipe(@_handles, 4096, 0) = -1 then begin @@ -1436,16 +1452,15 @@ function TpsvCustomPHP.CreateVirtualFile(ACode : zend_ustr): boolean; FVirtualWriteHandle := _handles[1]; Result := true; {$ELSE} - if ACode = '' then + if A_code = '' then Exit; - try + try FVirtualStream.Clear; - FVirtualStream.Write(ACode[1], Length(ACode)); - FVirtualStream.Position := 0; - Result := true; - except - Result := false; - end; + FVirtualStream.WriteString(A_code); + FVirtualStream.Seek(0, TSeekOrigin.soBeginning); + finally + Result := True; + end; {$ENDIF} end; @@ -1531,7 +1546,7 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; if ht > 0 then begin - if ( not (zend_get_parameters_ex(ht, Params) = SUCCESS )) then + if ( not (zend_get_parameters_my(ht, Params, TSRMLS_DC) = SUCCESS )) then begin zend_wrong_param_count(TSRMLS_DC); Exit; @@ -1592,7 +1607,7 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; procedure TPHPEngine.PrepareIniEntry; var - p : integer; + p, p2 : pointer; TimeStr : string; begin if not PHPLoaded then @@ -1601,11 +1616,9 @@ procedure TPHPEngine.PrepareIniEntry; if FHandleErrors then begin // p := integer(GetProcAddress(PHPLib, 'zend_do_print')); - p := integer(GetProcAddress(PHPLib, 'zend_error_cb')); - asm - mov edx, dword ptr [p] - mov dword ptr [edx], offset delphi_error_cb - end; + p := GetProcAddress(PHPLib, 'zend_error_cb'); + p2 := @delphi_error_cb; + Move(p, p2, 1); end; {$IFNDEF PHP540} if FSafeMode then @@ -1707,7 +1720,8 @@ procedure TPHPEngine.RegisterConstants; strlen(zend_pchar(ConstantName)) + 1, zend_pchar(ConstantValue), CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); end; - + zend_register_bool_constant( zend_pchar('UTF8_SUPPORT'), 13, {$IFDEF PHP_UNICE}TRUE{$ELSE}FALSE{$ENDIF}, + CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); RegisterInternalConstants(TSRMLS_D); end; @@ -1752,12 +1766,13 @@ procedure TPHPEngine.ShutdownEngine; {Shutdown PHP thread safe resource manager} if Assigned(FOnEngineShutdown) then FOnEngineShutdown(Self); - + {$IF not Defined(PHP550) and not Defined(PHP560)} try tsrm_shutdown(); except end; + {$ENDIF} FHash.Clear; finally FEngineActive := false; @@ -1807,83 +1822,35 @@ procedure TPHPEngine.RefreshLibrary; cnt, offset : integer; HashName : zend_ustr; begin - SetLength(FLibraryEntryTable, FHash.Count + MyFuncs.Count + 14); + SetLength(FLibraryEntryTable, FHash.Count + MyFuncs.Count + 5); PHP_FUNCTION(FLibraryEntryTable[0], 'delphi_date', @delphi_date); - PHP_FUNCTION(FLibraryEntryTable[1], 'delphi_extract_file_dir', @delphi_extract_file_dir); - PHP_FUNCTION(FLibraryEntryTable[2], 'delphi_extract_file_drive', @delphi_extract_file_drive); - PHP_FUNCTION(FLibraryEntryTable[3], 'delphi_extract_file_name', @delphi_extract_file_name); - - FLibraryEntryTable[4].fname := 'delphi_extract_file_ext'; - FLibraryEntryTable[4].handler := @delphi_extract_file_ext; - {$IFDEF PHP4} - FLibraryEntryTable[4].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[4].arg_info := nil; - {$ENDIF} - FLibraryEntryTable[5].fname := 'delphi_show_message'; - FLibraryEntryTable[5].handler := @delphi_show_message; - {$IFDEF PHP4} - FLibraryEntryTable[5].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[5].arg_info := nil; - {$ENDIF} + FLibraryEntryTable[1].fname := 'delphi_get_author'; + FLibraryEntryTable[1].handler := @delphi_get_author; + FLibraryEntryTable[1].arg_info := nil; - FLibraryEntryTable[6].fname := 'register_delphi_object'; - FLibraryEntryTable[6].handler := @register_delphi_object; - {$IFDEF PHP4} - FLibraryEntryTable[6].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[6].arg_info := nil; - {$ENDIF} - - FLibraryEntryTable[7].fname := 'delphi_get_author'; - FLibraryEntryTable[7].handler := @delphi_get_author; - {$IFDEF PHP4} - FLibraryEntryTable[7].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[7].arg_info := nil; - {$ENDIF} - - FLibraryEntryTable[8].fname := 'delphi_is_uc'; - FLibraryEntryTable[8].handler := @delphi_is_uc; - {$IFDEF PHP4} - FLibraryEntryTable[8].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[8].arg_info := nil; - {$ENDIF} - - FLibraryEntryTable[9].fname := 'delphi_str_date'; - FLibraryEntryTable[9].handler := @delphi_str_date; - {$IFDEF PHP4} - FLibraryEntryTable[9].func_arg_types := nil; - {$ELSE} - FLibraryEntryTable[9].arg_info := nil; - {$ENDIF} - - PHP_FUNCTION(FLibraryEntryTable[10], 'delphi_get_system_directory', @delphi_get_system_directory); - PHP_FUNCTION(FLibraryEntryTable[11], 'InputBox', @delphi_input_box); - PHP_FUNCTION(FLibraryEntryTable[12], 'register_delphi_component', @register_delphi_component); + FLibraryEntryTable[2].fname := 'delphi_str_date'; + FLibraryEntryTable[2].handler := @delphi_str_date; + FLibraryEntryTable[2].arg_info := nil; + PHP_FUNCTION(FLibraryEntryTable[3], 'InputBox', @delphi_input_box); for cnt := 0 to FHash.Count - 1 do begin HashName := FHash[cnt]; {$IFNDEF COMPILER_VC9} - FLibraryEntryTable[cnt+13].fname := strdup(zend_pchar(HashName)); + FLibraryEntryTable[cnt+4].fname := strdup(zend_pchar(HashName)); {$ELSE} - FLibraryEntryTable[cnt+13].fname := DupStr(zend_pchar(HashName)); + FLibraryEntryTable[cnt+4].fname := DupStr(zend_pchar(HashName)); {$ENDIF} - FLibraryEntryTable[cnt+13].handler := @DispatchRequest; - {$IFDEF PHP4} - FLibraryEntryTable[cnt+13].func_arg_types := nil; - {$ENDIF} + FLibraryEntryTable[cnt+4].handler := @DispatchRequest; + FLibraryEntryTable[cnt+4].arg_info := nil; end; - offset := FHash.Count + 13; + offset := FHash.Count + 4; for cnt := 0 to MyFuncs.Count - 1 do begin HashName := MyFuncs[cnt]; @@ -1894,17 +1861,13 @@ procedure TPHPEngine.RefreshLibrary; {$ENDIF} FLibraryEntryTable[cnt+offset].handler := MyFuncs.Objects[ cnt ]; - {$IFDEF PHP4} - FLibraryEntryTable[cnt+offset].func_arg_types := nil; - {$ENDIF} + FLibraryEntryTable[cnt+offset].arg_info := nil; end; - FLibraryEntryTable[FHash.Count+MyFuncs.Count+13].fname := nil; - FLibraryEntryTable[FHash.Count+MyFuncs.Count+13].handler := nil; - {$IFDEF PHP4} - FLibraryEntryTable[FHash.Count+MyFuncs.Count+13].func_arg_types := nil; - {$ENDIF} + FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].fname := nil; + FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].handler := nil; + FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].arg_info := nil; FLibraryModule.functions := @FLibraryEntryTable[0]; end; diff --git a/Source/phpClass.pas b/Source/phpClass.pas index a684840..8e3f286 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -156,7 +156,6 @@ TPHPClassInstance = class(TComponent) property Properties : TClassProperties read FProperties write SetProperties; end; - {$IFDEF PHP5} procedure RegisterClassHandlers; {$ENDIF} @@ -174,11 +173,7 @@ implementation {$ENDIF} const - {$IFDEF PHP4} - le_classresource_name = 'TPHPCLASS4'; - {$ELSE} le_classresource_name = 'TPHPCLASS5'; - {$ENDIF} procedure class_destructor_handler(rsrc : PZend_rsrc_list_entry; TSRMLS_D : pointer); cdecl; var @@ -224,211 +219,6 @@ function class_call_constructor(AClassName : zend_ustr; return_value : pzval) : end; end; -{$IFDEF PHP4} - -//PHP4 -function class_set_property_handler(property_reference : Pzend_property_reference; value : pzval) : integer; cdecl; -var - this_ptr : pzval; - OBJ : TPHPClassInstance; - data: ^ppzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - p : pointer; - propname : zend_ustr; - tsrmls : pointer; - param : TClassProperty; -begin - tsrmls := ts_resource_ex(0, nil); - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - - this_ptr := property_reference^._object; - new(data); - if zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data) = SUCCESS then - Obj := zend_fetch_resource(data^, TSRMLS, -1, 'class resource', nil, 1, le_classresource) - else - OBJ := nil; - freemem(data); - if Assigned(Obj) then - begin - convert_to_string(value); - param := Obj.Properties.ByName(propname); - if Assigned(param) then - param.Value := value.value.str.val; - end; - Result := SUCCESS; -end; - - - -//PHP4 -procedure class_call_function(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer; property_reference : Pzend_property_reference ); cdecl; -var - OBJ : TPHPClassInstance; - Producer : TPHPClass; - M : TPHPClassMethod; - data: ^ppzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - p : pointer; - MethodName : zend_ustr; - Params : pzval_array; - j : integer; -begin - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - MethodName := prop^.element.value.str.val; - this_ptr := property_reference^._object; - new(data); - if (zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data) = SUCCESS) then - Obj := zend_fetch_resource(data^, TSRMLS_DC, -1, 'class resource', nil, 1, le_classresource) - else - Obj := nil; - freemem(data); - - if not Assigned(Obj) then - begin - //not assigned obj = new instance (constructor) - class_call_constructor(MethodName, this_ptr); - exit; - end; - - if ht > 0 then - begin - if ( not (zend_get_parameters_ex(ht, Params) = SUCCESS )) then - begin - zend_wrong_param_count(TSRMLS_DC); - Exit; - end; - end; - - - Producer := Obj.Producer; - if Assigned(Producer) then - begin - M := Producer.Methods.ByName(MethodName); - if Assigned(M) then - begin - if Assigned(M.FOnExecute) then - begin - if M.Parameters.Count <> ht then - begin - zend_wrong_param_count(TSRMLS_DC); - Exit; - end; - - if ht > 0 then - begin - for j := 0 to ht - 1 do - begin - if not IsParamTypeCorrect(M.Parameters[j].ParamType, Params[j]^) then - begin - zend_error(E_WARNING, zend_pchar(Format('Wrong parameter type for %s()', [get_active_function_name(TSRMLS_DC)]))); - Exit; - end; - M.Parameters[j].Value := zval2variant(Params[j]^^); - end; - end; // if ht > 0 - - - M.ZendVar.AsZendVariable := return_value; //direct access to zend variable - M.FOnExecute(Obj, M.Parameters, M.ReturnValue, M.FZendVar.AsZendVariable, this_ptr, TSRMLS_DC); - if M.ZendVar.ISNull then //perform variant conversion - variant2zval(M.ReturnValue, return_value); - - end; - end; - end; - dispose_pzval_array(Params); -end; - - -//PHP4 -procedure class_get_property_handler(val : pzval; property_reference : PZend_property_reference); cdecl; -var - this_ptr : pzval; - element : pzend_list_element; - prop : pzend_overloaded_element; - obj : TPHPClassInstance; - p : pointer; - propname : zend_ustr; - tsrmls : pointer; - data: ^ppzval; - param : TClassProperty; -begin - tsrmls := ts_resource_ex(0, nil); - element := property_reference^.elements_list^.head; - p := @element^.data; - prop := pzend_overloaded_element(p); - propname := prop^.element.value.str.val; - this_ptr := property_reference^._object; - new(data); - if ( zend_hash_find(this_ptr^.value.obj.properties, 'instance', strlen('instance') + 1, data) <> SUCCESS) then - Obj := nil - else - Obj := zend_fetch_resource(data^, TSRMLS, -1, 'class resource', nil, 1, le_classresource); - freemem(data); - if Assigned(Obj) then - begin - param := Obj.Properties.ByName(propname); - if Assigned(param) then - ZVAL_STRING(val, zend_pchar(param.value), true) - else - ZVAL_EMPTY_STRING(val) - end - else - ZVAL_STRING(val, 'undefined', true); -end; - -//PHP4 -procedure _class_get_property_wrapper; assembler; -asm - push ebp - mov ebp,esp - sub esp,50h - push ebx - push esi - push edi - lea edi,[ebp-50h] - mov ecx,14h - mov eax,0CCCCCCCCh - rep stosd - mov eax,dword ptr [ebp+0Ch] - push eax - lea ecx,[ebp-10h] - push ecx - call class_get_property_handler - add esp,8 - mov edx,dword ptr [ebp+8] - mov eax,dword ptr [ebp-10h] - mov dword ptr [edx],eax - mov ecx,dword ptr [ebp-0Ch] - mov dword ptr [edx+4],ecx - mov eax,dword ptr [ebp-8] - mov dword ptr [edx+8],eax - mov ecx,dword ptr [ebp-4] - mov dword ptr [edx+0Ch],ecx - mov eax,dword ptr [ebp+8] - - pop edi - pop esi - pop ebx - add esp,50h - cmp ebp,esp - mov esp,ebp - pop ebp - ret -end; -{$ENDIF} - - - - {$IFDEF PHP5} // Read object property value (getter) @@ -535,7 +325,7 @@ function class_call_method(method : zend_pchar; ht : integer; return_value : pzv if ht > 0 then begin - if ( not (zend_get_parameters_ex(ht, Params) = SUCCESS )) then + if ( not (zend_get_parameters_my(ht, Params, TSRMLS_DC) = SUCCESS )) then begin zend_wrong_param_count(TSRMLS_DC); Result := FAILURE; @@ -679,24 +469,12 @@ procedure TPHPClass.ClassRegister(AModuleNumber : integer); ZeroMemory(@FClassEntry, SizeOf(TZend_Class_Entry)); - {$IFDEF PHP5} FClassFunction[0].fname := zend_pchar(FClassName); FClassFunction[0].handler := @class_init_new; INIT_CLASS_ENTRY(FClassEntry, zend_pchar(FClassName) , @FClassFunction); - {$ELSE} - INIT_CLASS_ENTRY(FClassEntry, zend_pchar(FClassName) , nil); - {$ENDIF} FClassObject := zend_register_internal_class(@FClassEntry, tsrmls); - - {$IFDEF PHP4} - FClassObject.handle_property_get := @_class_get_property_wrapper; - FClassObject.handle_property_set := @class_set_property_handler; - FClassObject.handle_function_call := @class_call_function; - {$ENDIF} - - Application.RegisterPHPClass(FClassName, FClassObject); end; end; @@ -743,17 +521,8 @@ function TPHPClass.InstanceConstructor(return_value : pzval): TPHPClassInstance; FClassObject := GetClassEntry; if not assigned(FClassObject) then Exit; - {$IFDEF PHP4} - _object_init_ex(return_value, FClassObject, nil, 0, TSRMLS); - {$ELSE} object_init(return_value, FClassObject, TSRMLS ); - {$ENDIF} - - {$IFDEF PHP4} - add_property_resource_ex(return_value, 'instance', strlen('instance') +1, rn); - {$ELSE} add_property_resource_ex(return_value, 'instance', strlen('instance') +1, rn, TSRMLS); - {$ENDIF} {$IFDEF PHP5} return_value.value.obj.handlers := @ClassObjectHandlers; @@ -787,18 +556,8 @@ procedure TPHPClass.ProduceInstance(AValue: pzval); FClassObject := Application.GetPHPClass(FClassName); if not assigned(FClassObject) then Exit; - - {$IFDEF PHP4} - _object_init_ex(AValue, FClassObject, nil, 0, TSRMLS); - {$ELSE} object_init(AValue, FClassObject, TSRMLS ); - {$ENDIF} - - {$IFDEF PHP4} - add_property_resource_ex(AValue, 'instance', strlen('instance') +1, rn); - {$ELSE} add_property_resource_ex(AValue, 'instance', strlen('instance') +1, rn, TSRMLS); - {$ENDIF} {$IFDEF PHP5} AValue.value.obj.handlers := @ClassObjectHandlers; @@ -882,11 +641,7 @@ function TClassProperty.GetAsFloat: double; function TClassProperty.GetAsInteger: integer; var - {$IFDEF VERSION12} - c : WideChar; - {$ELSE} - c : AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try @@ -920,11 +675,7 @@ procedure TClassProperty.SetAsFloat(const Value: double); procedure TClassProperty.SetAsInteger(const Value: integer); var - {$IFDEF VERSION12} - c : WideChar; - {$ELSE} - c : AnsiChar; - {$ENDIF} + c: CharPtr; begin c := FormatSettings.DecimalSeparator; try diff --git a/Source/phpModules.pas b/Source/phpModules.pas index 9943c82..04dcf0a 100644 --- a/Source/phpModules.pas +++ b/Source/phpModules.pas @@ -265,7 +265,7 @@ function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointe procedure DispatchRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; begin - ZVAL_NULL(return_value); + ZVAL(return_value); if Assigned(Application) then try Application.HandleRequest(ht, return_value, return_value_ptr, this_ptr, return_value_used, TSRMLS_DC); @@ -343,15 +343,11 @@ function get_module : Pzend_module_entry; cdecl; {$ENDIF} module_entry_table[cnt].handler := @DispatchRequest; - {$IFDEF PHP4} - module_entry_table[cnt].func_arg_types := nil; - {$ENDIF} + module_entry_table[cnt].arg_info := nil; end; module_entry_table[Extension.FFunctions.Count].fname := nil; module_entry_table[Extension.FFunctions.Count].handler := nil; - {$IFDEF PHP4} - module_entry_table[Extension.FFunctions.Count].func_arg_types := nil; - {$ENDIF} + module_entry_table[Extension.FFunctions.Count].arg_info := nil; ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := ORD(Extension.ModuleType) + 1; From c2bdc6ee76d0172200463f07e09fae45f1412d33 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 00:52:52 +0200 Subject: [PATCH 17/35] intpr --- Source/PHPAPI.pas | 6 +++--- Source/ZENDAPI.pas | 11 +++-------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index d1a6baf..2a14ce9 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -345,7 +345,7 @@ function GetSAPIGlobals : Psapi_globals_struct; begin Result := nil; if Assigned(sapi_globals_id) then - Result := __asm_fetchval(integer(sapi_globals_id^), tsrmls_fetch); + Result := __asm_fetchval(IntPtr(sapi_globals_id^), tsrmls_fetch); end; function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; var @@ -354,7 +354,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; Result := nil; sapi_global_id := GetProcAddress(PHPLib, 'sapi_globals_id'); if Assigned(sapi_global_id) then - Result := __asm_fetchval(integer(sapi_globals_id^), TSRMLS_DC); + Result := __asm_fetchval(IntPtr(sapi_globals_id^), TSRMLS_DC); end; function GetStringOf(const V: TVarData): string; @@ -407,7 +407,7 @@ function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; begin Result := nil; if Assigned(core_globals_id) then - Result := Pphp_Core_Globals(__asm_fetchval(integer(core_globals_id^), TSRMLS_DC)); + Result := Pphp_Core_Globals(__asm_fetchval(IntPtr(core_globals_id^), TSRMLS_DC)); end; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 7417590..c39df3e 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -3301,12 +3301,7 @@ function zend_register_functions(functions : {$IFDEF PHP7}P_zend_function_entry{ end; -function __asm_fetchval -{$IFDEF CPUX64} -(val_id: int64; tsrmls_dc_p: pointer) -{$ELSE} -(val_id: integer; tsrmls_dc_p: pointer) -{$ENDIF} +function __asm_fetchval(val_id: IntPtr; tsrmls_dc_p: pointer) : pointer; assembler; register; {$IFDEF CPUX64} asm @@ -3335,7 +3330,7 @@ function GetGlobalResource(resource_name: AnsiString) : pointer; global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - Result := __asm_fetchval(integer(global_id^), tsrmls_fetch); + Result := __asm_fetchval(IntPtr(global_id^), tsrmls_fetch); end; except Result := nil; @@ -3351,7 +3346,7 @@ function GetGlobalResourceDC(resource_name: AnsiString;TSRMLS_DC:pointer) : poin global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - Result := __asm_fetchval(integer(global_id^), TSRMLS_DC); + Result := __asm_fetchval(IntPtr(global_id^), TSRMLS_DC); end; except Result := nil; From 09f6b4852ff363f72a5e4a27bdc12f5421166e82 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 13:57:07 +0200 Subject: [PATCH 18/35] Closed #4 , #2 Still facing encoding problems with RunCode() function --- Source/DelphiFunctions.pas | 2 +- Source/Demos/psvPHP/console/phpcon.dpr | 4 +- Source/Demos/psvPHP/console/phpcon.dproj | 2 +- Source/PHP.INC | 9 +- Source/PHPAPI.pas | 12 +- Source/PHPFunctions.pas | 23 +- Source/PHPLibrary.pas | 13 +- Source/PHPProjectWizard.pas | 2 +- Source/PHPTypes.pas | 12 +- Source/ZENDAPI.pas | 330 +++++++++-------------- Source/ZendTypes.pas | 17 +- Source/hzend_types.pas | 8 +- Source/php4AppIntf.pas | 3 +- Source/php4AppUnit.pas | 2 +- Source/php4delphi.pas | 25 +- Source/phpClass.pas | 16 +- 16 files changed, 202 insertions(+), 278 deletions(-) diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 3be090d..74bbcc3 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -18,7 +18,7 @@ interface uses SysUtils, Classes, VCL.Controls, - {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} ZendAPI, PHPTypes, PHPAPI, VCL.Dialogs, typinfo, + ZendTypes, ZendAPI, PHPTypes, PHPAPI, VCL.Dialogs, typinfo, VCL.Forms, VCL.stdctrls; {$ifdef fpc} diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index 5ac140b..afe658b 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -31,7 +31,7 @@ var begin if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @Text) = 0 then begin - ShowMessage(Z_STRVAL(Text)); + ShowMessage(WideString(Z_RawStr(Text))); end; end; procedure grc(ht: integer; return_value: pzval; @@ -42,7 +42,7 @@ var begin if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @p) = 0 then begin - p^.value.lval := 0; + ZVAL_STRING(z,'🐆🐆🐆 .-=WPD=-. 🐆🐆🐆',true); end; end; begin diff --git a/Source/Demos/psvPHP/console/phpcon.dproj b/Source/Demos/psvPHP/console/phpcon.dproj index fdd2dd5..06928a9 100644 --- a/Source/Demos/psvPHP/console/phpcon.dproj +++ b/Source/Demos/psvPHP/console/phpcon.dproj @@ -8,7 +8,7 @@ Console None 18.2 - Win64 + Win32 true diff --git a/Source/PHP.INC b/Source/PHP.INC index 2662f6d..5ee313f 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -52,7 +52,7 @@ backward compatibility between PHP versions. {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} -{s$DEFINE soulengine_build} +{$DEFINE soulengine_build} {.$DEFINE PHP7} {.$DEFINE CUTTED_PHP7dll} {$IFDEF PHP7} @@ -64,7 +64,6 @@ backward compatibility between PHP versions. {$DEFINE PHP530} {$DEFINE PHP540} {$DEFINE PHP550} - {//$DEFINE PHP_UNICE} {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} @@ -97,6 +96,12 @@ backward compatibility between PHP versions. {$DEFINE ZTS} {zts support} {$ENDIF} +{$IF Defined(COMPILER_VC11) and Defined(PHP560) or Defined(PHP7)} + {$DEFINE PHP_UNICODE} +{$ELSEIF Defined(COMPILER_VC12) or Defined(COMPILER_VC13) or Defined(COMPILER_VC14) or Defined(COMPILER_VC15)} + {$DEFINE PHP_UNICODE} +{$ENDIF} + {$IFNDEF VER80} {Delphi 1.0} {$DEFINE VERSION2} {Delphi 2.0 and BCB 1 or higher} {$ENDIF} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 2a14ce9..28b154e 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -29,7 +29,7 @@ interface Windows {$ENDIF}, - {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} + ZendTypes, PHPTypes, zendAPI, @@ -704,7 +704,7 @@ function GetPHPVersion: TPHPFileInfo; {$ELSE} function GetPHPVersion: TPHPFileInfo; var - FileName: {$IFDEF PHP_UNICE}String{$ELSE}AnsiString{$ENDIF}; + FileName: String; InfoSize, Wnd: DWORD; VerBuf: Pointer; FI: PVSFixedFileInfo; @@ -715,20 +715,12 @@ function GetPHPVersion: TPHPFileInfo; Result.Release := 0; Result.Build := 0; FileName := PHPWin; - {$IFDEF PHP_UNICE} InfoSize := GetFileVersionInfoSize(PWideChar(Filename), Wnd); - {$ELSE} - InfoSize := GetFileVersionInfoSizeA(PAnsiChar(FileName), Wnd); - {$ENDIF} if InfoSize <> 0 then begin GetMem(VerBuf, InfoSize); try - {$IFDEF PHP_UNICE} if GetFileVersionInfo(PWideChar(FileName), Wnd, InfoSize, VerBuf) then - {$ELSE} - if GetFileVersionInfoA(PAnsiChar(FileName), Wnd, InfoSize, VerBuf) then - {$ENDIF} if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then begin Result.MajorVersion := HIWORD(FI.dwFileVersionMS); diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index 80ceda8..07abf5b 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -20,10 +20,10 @@ interface uses Windows, SysUtils, Classes, - {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} + {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} {$IFDEF VERSION6} Variants, {$ENDIF} - {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} PHPTypes, ZendAPI, PHPAPI ; + ZendTypes, PHPTypes, ZendAPI, PHPAPI ; type TParamType = (tpString, tpInteger, tpFloat, tpBoolean, tpArray, tpUnknown); @@ -316,17 +316,17 @@ procedure TPHPFunction.SetDisplayName(const Value: string); NameValue : zend_ustr; begin NameValue := Value; - if {$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(NameValue, FFunctionName) <> 0 then + if {$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(NameValue, FFunctionName) <> 0 then begin if Collection <> nil then for I := 0 to Collection.Count - 1 do begin F := TPHPFunctions(Collection).Items[I]; if (F <> Self) and (F is TPHPFunction) and - ({$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(NameValue, F.FunctionName) = 0) then + ({$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(NameValue, F.FunctionName) = 0) then raise Exception.CreateFmt('Duplicate function name: %s', [Value]); end; - FFunctionName := {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(Value); + FFunctionName := {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(Value); Changed(False); end; end; @@ -467,14 +467,14 @@ procedure TFunctionParam.SetDisplayName(const Value: string); I: Integer; F: TFunctionParam; begin - if {$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, FName) <> 0 then + if {$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, FName) <> 0 then begin if Collection <> nil then for I := 0 to Collection.Count - 1 do begin F := TFunctionParams(Collection).Items[I]; if ((F <> Self) and (F is TFunctionParam) and - ({$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0)) then + ({$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0)) then raise Exception.Create('Duplicate parameter name'); end; FName := Value; @@ -611,14 +611,7 @@ function TZendVariable.GetAsString: zend_ustr; end; case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of - IS_STRING : begin - try - SetLength(Result, FValue^.value.str.len); - Move(FValue^.value.str.val^, Result[1], FValue^.value.str.len); - except - Result := ''; - end; - end; + IS_STRING : result := Z_STRVAL(FValue); IS_DOUBLE : result := FloatToStr(FValue^.value.dval); IS_LONG : result := IntToStr(FValue^.value.lval); IS_NULL : result := ''; diff --git a/Source/PHPLibrary.pas b/Source/PHPLibrary.pas index 531998f..1ffad85 100644 --- a/Source/PHPLibrary.pas +++ b/Source/PHPLibrary.pas @@ -16,6 +16,9 @@ interface uses Windows, SysUtils, Classes, + {$IFDEF PHP_UNICODE} + WideStrUtils, + {$ENDIF} {$IFDEF VERSION6} Variants, {$ENDIF} @@ -178,7 +181,7 @@ procedure TPHPSimpleLibrary.RegisterMethod(AName: zend_ustr; ADescription : zend begin Func := TPHPFunction(Functions.Add); Func.FunctionName := - {$IFDEF PHP_UNICE}LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(AName); + {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF}(AName); Func.Description := ADescription; for cnt := 0 to Length(AParams) - 1 do @@ -353,28 +356,28 @@ procedure TPHPSystemLibrary.CompareTextProc; procedure TPHPSystemLibrary.AnsiUpperCaseProc; begin ReturnOutputArg( - {$IFDEF PHP_UNICE}UpperCase{$ELSE}AnsiUpperCase{$ENDIF}( GetInputArgAsString( 0 ) ) + {$IFDEF PHP_UNICODE}UTF8UpperCase{$ELSE}AnsiUpperCase{$ENDIF}( GetInputArgAsString( 0 ) ) ); end; procedure TPHPSystemLibrary.AnsiLowerCaseProc; begin ReturnOutputArg( - {$IFDEF PHP_UNICE}LowerCase{$ELSE}AnsiLowerCase{$ENDIF}( GetInputArgAsString( 0 ) ) + {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF}( GetInputArgAsString( 0 ) ) ); end; procedure TPHPSystemLibrary.AnsiCompareStrProc; begin ReturnOutputArg( - {$IFDEF PHP_UNICE}CompareStr{$ELSE}AnsiCompareStr{$ENDIF}( GetInputArgAsString( 0 ),GetInputArgAsString( 1 ) ) + {$IFDEF PHP_UNICODE}CompareStr{$ELSE}AnsiCompareStr{$ENDIF}( GetInputArgAsString( 0 ),GetInputArgAsString( 1 ) ) ); end; procedure TPHPSystemLibrary.AnsiCompareTextProc; begin ReturnOutputArg( - {$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}( GetInputArgAsString( 0 ),GetInputArgAsString( 1 ) ) + {$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}( GetInputArgAsString( 0 ),GetInputArgAsString( 1 ) ) ); end; diff --git a/Source/PHPProjectWizard.pas b/Source/PHPProjectWizard.pas index 4a281d1..78c8a6e 100644 --- a/Source/PHPProjectWizard.pas +++ b/Source/PHPProjectWizard.pas @@ -268,7 +268,7 @@ function TPHPProjectCreator.GetFileName: string; begin try TempFileName := ProjGroup.Projects[i].FileName; - if {$IFDEF PHP_UNICE}CompareFileName{$ELSE}AnsiCompareFileName{$ENDIF}(ExtractFileName(TempFileName), ExtractFileName(TempFileName2)) = 0 then + if CompareFileName(ExtractFileName(TempFileName), ExtractFileName(TempFileName2)) = 0 then begin Found := True; Break; diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 9fa22fe..6516dbe 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -16,7 +16,7 @@ interface uses - {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7} hzend_types {$ELSE} ZendTypes {$ENDIF}; + {$IFNDEF FPC} Windows{$ELSE} LCLType{$ENDIF}, ZendTypes; const phpVersion = {$IFDEF PHP7}7{$ELSE}5{$ENDIF}; @@ -249,8 +249,8 @@ interface sapi_module_struct = record - name : PAnsiChar; - pretty_name : PAnsiChar; + name : zend_pchar; + pretty_name : zend_pchar; startup : TModuleStartupFunc; //int (*startup)(struct _sapi_module_struct *sapi_module); @@ -283,14 +283,14 @@ interface get_request_time : pointer; terminate_process : pointer; - php_ini_path_override : PAnsiChar; + php_ini_path_override : zend_pchar; block_interruptions : pointer; unblock_interruptions : pointer; default_post_reader : pointer; treat_data : pointer; - executable_location : PAnsiChar; + executable_location : zend_pchar; php_ini_ignore : Integer; @@ -308,7 +308,7 @@ interface phpinfo_as_text : integer; - ini_entries : PAnsiChar; + ini_entries : zend_pchar; additional_functions: Pointer; input_filter_init : Pointer; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index c39df3e..2a965f2 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -21,8 +21,9 @@ interface uses VCL.Dialogs, - {$IFNDEF FPC} Windows{$ELSE} LCLType,LCLIntf,dynlibs,libc{$ENDIF}, SysUtils, - {$IFDEF PHP7} hzend_types, {$ElSE} ZendTypes, {$ENDIF} Variants, +WideStrUtils, + {$IFDEF FPC} LCLType,LCLIntf,dynlibs,libc{$ELSE}Windows{$ENDIF}, SysUtils, + ZendTypes, Variants, PHPTypes; type TArrayVariant = array of variant; @@ -77,7 +78,7 @@ align_test = record end; const PLATFORM_ALIGNMENT = (SizeOf(align_test)); -{$IFNDEF PHP_UNICE} +{$IFNDEF PHP_UNICODE} function AnsiFormat(const Format: AnsiString; const Args: array of const): AnsiString; {$ENDIF} function Lfunc(var Func: Pointer; addr: LPCWSTR): Bool; @@ -318,13 +319,13 @@ procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} zend_register_auto_global : {$IFDEF PHP700} - function(name:Pzend_string; jit:zend_bool; auto_global_callback:Pointer):longint; cdecl; + function(name:Pzend_string; jit:boolean; instance_init_callback:Pointer): IntPtr; cdecl; {$ELSE} {$IFDEF PHP5} - function(name: zend_pchar; name_len: uint; jit:boolean; callback: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; + function(name: zend_pchar; name_len: uint; jit:boolean; instance_init_callback: Pointer; TSRMLS_DC: Pointer): IntPtr; cdecl; zend_activate_auto_globals: procedure(TSRMLS_C: Pointer); cdecl; {$ELSE} - function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): Integer; cdecl; + function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): IntPtr; cdecl; {$ENDIF} {$ENDIF} procedure REGISTER_MAIN_LONG_CONSTANT(name: zend_pchar; lval: longint; flags: integer; TSRMLS_DC: Pointer); @@ -349,7 +350,7 @@ procedure REGISTER_MAIN_STRINGL_CONSTANT(name: zend_pchar; str: zend_pchar; len: zend_error_cb : procedure; cdecl; zend_eval_string : function(str: zend_pchar; ret_val: pointer; strname: zend_pchar; tsrm: pointer): integer; cdecl; - zend_eval_string_ex : function(str:PAnsiChar; retval_ptr:pzval; string_name:PAnsiChar; handle_exceptions:longint):longint; cdecl; + zend_eval_string_ex : function(str: zend_pchar; retval_ptr:pzval; string_name: zend_pchar; handle_exceptions:longint):longint; cdecl; zend_make_compiled_string_description : function(a: zend_pchar; tsrm: pointer): zend_pchar; cdecl; _zval_copy_ctor_func : procedure(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; _zval_dtor_func : procedure(val: pzval; __zend_filename: zend_pchar; __zend_lineno: uint); cdecl; @@ -530,12 +531,12 @@ procedure convert_to_string(op: pzval); zend_html_puts : procedure(s: zend_pchar; len: uint; TSRMLS_DC: Pointer); cdecl; - zend_parse_method_parameters:function(num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:PAnsiChar):longint; cdecl varargs; + zend_parse_method_parameters:function(num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:zend_pchar):longint; cdecl varargs; - zend_parse_method_parameters_ex:function(flags:longint; num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:PAnsiChar):longint; cdecl varargs; + zend_parse_method_parameters_ex:function(flags:longint; num_args:longint; TSRMLS_DC:Pointer; this_ptr:Pzval; type_spec:zend_pchar):longint; cdecl varargs; {$IFDEF PHP7} - zend_parse_parameters_throw : function(num_args:longint; type_spec:PAnsiChar):longint; cdecl varargs; + zend_parse_parameters_throw : function(num_args:longint; type_spec:zend_pchar):longint; cdecl varargs; {$ELSE} zend_indent : procedure; cdecl; {$ENDIF} @@ -566,7 +567,7 @@ procedure dispose_pzval_array(Params: pzval_array); var _zend_bailout : procedure (filename : zend_pchar; lineno : uint); cdecl; - zend_alter_ini_entry : function(name: PAnsiChar; name_length: uint; new_value: PAnsiChar; new_value_length: uint; modify_type: Integer; stage: Integer): Integer; cdecl; + zend_alter_ini_entry : function(name: zend_pchar; name_length: uint; new_value: zend_pchar; new_value_length: uint; modify_type: Integer; stage: Integer): Integer; cdecl; zend_alter_ini_entry_ex : function(name: zend_pchar; name_length: uint; new_value: zend_pchar; new_value_length: uint; modify_type: Integer; stage: Integer; force_change: integer): Integer; cdecl; zend_restore_ini_entry : function(name: zend_pchar; name_length: uint; stage: Integer): Integer; cdecl; @@ -674,13 +675,6 @@ procedure ZEND_PUTS(str: zend_pchar); zend_register_internal_module : function(module_entry: Pzend_module_entry; TSRMLS_DC: pointer): Pzend_module_entry;cdecl; zend_startup_modules : function(TSRMLS_DC:pointer):integer; zend_collect_module_handlers : function(TSRMLS_DC:pointer):integer; - function ZvalInt(z:zval):Integer; - function ZvalDouble(z:zval):Double; - function ZvalBool(z:zval):Boolean; - - function ZvalStrS(z:zval) : string; - function ZvalStr(z:zval) : zend_ustr; - function ZvalStrW(z:zval) : WideString; procedure ZvalVAL(z:pzval; v:Boolean) overload; procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG) overload; @@ -739,8 +733,9 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of st procedure HashToArray(HT: {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; var AR: TArrayVariant); overload; procedure ArrayToHash(AR: Array of Variant; var HT: pzval); overload; procedure ArrayToHash(Keys,AR: Array of Variant; var HT: pzval); overload; -function ToStrA(V: Variant): zend_ustr; -function ToStr(V: Variant): String; +function ToStrA(V: Variant): AnsiString; +function ToStrW(V: Variant): WideString; +function ToStr(V: Variant): zend_ustr; function toWChar(s: zend_pchar): PWideChar; function ZendToVariant(const Value: pzval;cobj: TObjectBConvertMethod=nil): Variant; {$IFNDEF PHP7} @@ -750,10 +745,11 @@ function ZendToVariant(const Value: pppzval;cobj: TObjectBConvertMethod=nil): Va {$ENDIF} procedure VariantToZend(const Value: Variant; z: pzval; cobj: TObjectAConvertMethod=nil); -procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); -procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); -procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); - +procedure ZVAL_RawStr(z: pzval; s:RawByteString; duplicate: boolean); +procedure ZVAL_STRING(z: pzval; s: WideString; duplicate: boolean); +procedure ZVAL_STRINGU(z: pzval; s: UTF8String; duplicate: boolean); +procedure ZVAL_STRINGW(z: pzval; StW: WideString; duplicate: boolean); +procedure ZVAL_STRINGA(z: pzval; s: AnsiString; duplicate: boolean); procedure ZVAL_STRINGL(z: pzval; s: zend_pchar; l: integer; duplicate: boolean); procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); @@ -832,9 +828,11 @@ function object_init(arg: pzval; ce: pzend_class_entry; TSRMLS_DC : pointer) : i function Z_LVAL(z : Pzval) : longint; function Z_BVAL(z : Pzval) : boolean; function Z_DVAL(z : Pzval) : double; -function Z_STRVAL(z : Pzval) : zend_ustr; +function Z_RAWSTR(z: PZval): RawByteString; +function Z_STRVAL(z : Pzval) : WideString; +function Z_ASTRVAL(z : Pzval) : AnsiString; function Z_STRUVAL(z : PZval): UTF8String; -function Z_STRWVAL(z : pzval) : String; +function Z_WSTRVAL(z : pzval) : String; function Z_CHAR(z: PZval) : zend_uchar; function Z_WCHAR(z: PZval) : WideChar; function Z_ACHAR(z: PZVAL): AnsiChar; @@ -873,7 +871,7 @@ function add_char_to_string (_result: Pzval; op1: Pzval; op2: Pzval): Integer; if op1.u1.v._type = IS_STRING then begin _result.value.str.len := op1.value.str.len + op2.value.str.len; - _result.value.str.val := zend_pchar(zend_ustr(op1.value.str.val) + zend_ustr(op2.value.str.val)); + _result.value.str.val := op1.value.str.val + op2.value.str.val; Result := SUCCESS; end; End; @@ -1024,35 +1022,6 @@ procedure ZvalString(z:pzval; s:string; len:Integer = 0); else ZvalString(z, _s, len); end; -function ZvalInt; -begin - Result := z.value.lval; -end; - -function ZvalDouble; -begin - Result := z.value.dval; -end; - -function ZvalBool; -begin - Result := boolean(z.value.lval); -end; - -function ZvalStrS; -begin - Result := z.value.str.val; -end; - -function ZvalStr; -begin - Result := z.value.str.val; -end; - -function ZvalStrW; -begin - Result := WideString(z.value.str.val); -end; procedure ZvalVAL(z:pzval; v:Boolean); Begin @@ -1262,7 +1231,7 @@ function ZValArrayKeyExists(v: pzval; idx: Integer; out pData: pzval) function ZValArrayKeyDel(v: pzval; key: zend_ustr): Boolean; overload; {$IFDEF PHP7} var - pzs: pzend_string; + pzs: zend_pchar; {$ENDIF} begin Result := false; @@ -1282,7 +1251,7 @@ function ZValArrayKeyDel(v: pzval; key: zend_ustr): Boolean; overload; function ZValArrayKeyDel(v: pzval; idx: Integer): Boolean; overload; {$IFDEF PHP7} var - pzs: pzend_string; + pzs: zend_pchar; {$ENDIF} begin Result := false; @@ -1359,9 +1328,9 @@ function GetArgPZval; vtUnicodeString: ZvalVAL(Result, UnicodeString(Args._Reserved1)); vtWideChar: - ZvalVAL(Result, zend_ustr(Args.VWideChar)); + ZvalVAL(Result, zend_pchar(Args.VWideChar)); vtChar: - ZvalVAL(Result, zend_pchar(zend_uchar(Args.VChar))); + ZvalVAL(Result, zend_pchar(Args.VChar)); vtPWideChar: ZvalVAL(Result, Args.VPWideChar); vtPChar: @@ -1373,66 +1342,52 @@ function GetArgPZval; end; -procedure ZVAL_STRINGU(z: pzval; s: PUtf8Char; duplicate: boolean); +procedure ZVAL_STRINGU(z: pzval; s: UTF8String; duplicate: boolean); var - __s : PUTF8Char; + sc: PUTF8Char; begin - if not assigned(s) then - __s := '' - else - __s := s; - - z^.value.str.len := length(__s); + sc := PUtf8Char(s); + z^.value.str.len := Length(s); if duplicate then - - z^.value.str.val := estrndup(__s, z^.value.str.len) + z^.value.str.val := estrndup(sc, z^.value.str.len) else - z^.value.str.val := __s; - {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; + z^.value.str.val := sc; + + z^._type := IS_STRING; end; -procedure ZVAL_STRING(z: pzval; s: zend_pchar; duplicate: boolean); -var - __s : zend_pchar; +procedure ZVAL_RawStr(z: pzval; s: RawByteString; duplicate: boolean); +var _s: RawByteString; begin - if not assigned(s) then - __s := '' - else - __s := s; - - z^.value.str.len := strlen(__s); - if duplicate then - - z^.value.str.val := estrndup(__s, z^.value.str.len) - else - z^.value.str.val := __s; - {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; + _s := s; + SetCodePage(_s, CP_UTF8, not IsUTF8String(_s)); + ZVAL_STRINGU(z, UTF8String(_s), duplicate); end; -procedure ZVAL_STRINGW(z: pzval; s: PWideChar; duplicate: boolean); +procedure ZVAL_STRING(z: pzval; s: WideString; duplicate: boolean); +begin + ZVAL_STRINGU(z, UTF8String(s), duplicate); +end; +procedure ZVAL_STRINGW(z: pzval; StW: WideString; duplicate: boolean); var - __s : zend_pchar; - StA : zend_ustr; - StW : WideString; + St: UTF8String; + sc: PUTF8Char; begin - if not assigned(s) then - __s := '' - else - begin - StW := WideString(s); - StA := zend_ustr(StW); - __s := zend_pchar(StA); - end; - z^.value.str.len := strlen(__s); + St := UTF8String(StW); + sc := PUtf8Char(St); + z^.value.str.len := Length(St); if duplicate then - - z^.value.str.val := estrndup(__s, z^.value.str.len) + z^.value.str.val := estrndup(sc, z^.value.str.len) else - z^.value.str.val := __s; - {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; -end; + z^.value.str.val := sc; + z^._type := IS_STRING; +end; +procedure ZVAL_STRINGA(z: pzval; s: AnsiString; duplicate: boolean); +begin + ZVAL_STRINGU(z, UTF8String(s), duplicate); +end; procedure ZVAL_STRINGL(z: pzval; s: zend_pchar; l: integer; duplicate: boolean); var __s : zend_pchar; @@ -1479,27 +1434,28 @@ procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); procedure ZVAL_EMPTY_STRING(z: pzval); begin z^.value.str.len := 0; - // {$IFDEF PHP510} z^.value.str.val := STR_EMPTY_ALLOC; - (*{$ELSE} - z^.value.str.val := ''; - {$ENDIF}*) {$IFDEF PHP7} z^.u1.v._type {$ELSE} z^._type {$ENDIF} := IS_STRING; end; -function ToStrA(V: Variant): zend_ustr; +function ToStrA(V: Variant): AnsiString; begin Result := V; end; -function ToStr(V: Variant): String; +function ToStr(V: Variant): zend_ustr; +begin + Result := V; +end; + +function ToStrW(V: Variant): WideString; begin Result := V; end; function ToPChar(V: Variant): zend_pchar; begin - Result := zend_pchar(ToStr(V)); + Result := zend_pchar(zend_ustr(V)); end; function toWChar(s: zend_pchar): PWideChar; @@ -1541,8 +1497,6 @@ procedure VarArrayToHash(var HT: pzval;Value: Variant); end; function ZendToVariant(const Value: pzval; cobj: TObjectBConvertMethod=nil): Variant; overload; - Var - S: String; begin case {$IFDEF PHP7} Value^.u1.v._type {$ELSE}Value^._type{$ENDIF} of 0: Result := Null; //Null @@ -1558,11 +1512,11 @@ function ZendToVariant(const Value: pzval; if Assigned(cobj) then Result := cobj(Value) else - Result := Null; //String - 6: begin S := Value^.value.str.val; Result := S; end; + Result := Null; + 6: Result := Z_STRVAL(Value); //String 7: Result := Value^.value.lval; //Resource //Constant - 8: begin S := Value^.value.str.val; Result := S; end; + 8: Result := Z_STRVAL(Value); {$IFDEF PHP7} 9: Result := HashToVarArray(Value^.value.arr) //Constant Array {$ELSE} @@ -1586,9 +1540,10 @@ procedure VariantToZend(const Value:Variant;z:pzval; case TVarData(Value).VType of varString : //Peter Enz begin + // ShowMessage('h_e'); if Assigned ( TVarData(Value).VString ) then begin - ZVAL_STRING(z, TVarData(Value).VString , true); + ZVAL_STRINGA(z, AnsiString(PAnsiChar(TVarData(Value).VString)), true); end else begin @@ -1663,9 +1618,10 @@ procedure VariantToZend(const Value:Variant;z:pzval; end; varStrArg : //Peter Enz begin + //ShowMessage('h_e_e'); if Assigned ( TVarData(Value).VString ) then begin - ZVAL_STRING(z, TVarData(Value).VString , true); + ZVAL_STRINGA(z, AnsiString(PAnsiChar(TVarData(Value).VString)), true); end else begin @@ -1843,7 +1799,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; for i := 0 to Length(arr)-1 do begin - add_next_index_string(z, zend_pchar(arr[i]), 1); + add_next_index_string(z, zend_pchar(zend_ustr(arr[i])), 1); end; Exit; end; @@ -2002,7 +1958,7 @@ procedure ZVAL_ARRAYAC(z: pzval; keynames: Array of ansichar; keyvals: Array of if Length(keynames) = Length(keyvals) then begin for i := 0 to Length(keynames)-1 do - add_assoc_string_ex(z, zend_pchar(zend_uchar(keynames[i])), StrLen(PAnsiChar(keynames[i])) + 1, zend_pchar(zend_uchar(keyvals[i])), 1); + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); end else begin @@ -2033,7 +1989,7 @@ procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of begin for i := 0 to Length(keynames)-1 do begin - add_assoc_string_ex(z, zend_pchar(keynames[i]), StrLen(zend_pchar(keynames[i])) + 1, zend_pchar(keyvals[i]), 1); + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); end; Exit; end @@ -2070,7 +2026,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: TWSDate; keyvals: TWSDate); overloa begin //������ ������ � ������� ������� ������ //������ ���������� ������ � ������ ������� ������ - add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), StrLen(zend_pchar(zend_ustr(keynames[i]))) + 1, + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); //���������� ���� @@ -2108,7 +2064,7 @@ procedure ZVAL_ARRAYWS(z: pzval; keynames: array of string; keyvals: array of begin for i := 0 to Length(keynames)-1 do begin - add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), StrLen(zend_pchar(zend_ustr(keynames[i]))) + 1, + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); end; Exit; @@ -2144,7 +2100,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: TASDate; keyvals: TASDate); overload; begin for i := 0 to Length(keynames)-1 do begin - add_assoc_string_ex(z, zend_pchar(keynames[i]), StrLen(zend_pchar(keynames[i])) + 1, zend_pchar(keyvals[i]), 1); + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); end; Exit; end @@ -2179,7 +2135,7 @@ procedure ZVAL_ARRAYAS(z: pzval; keynames: Array of AnsiString; keyvals: Array o begin for i := 0 to Length(keynames)-1 do begin - add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), StrLen(PAnsiChar(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); + add_assoc_string_ex(z, zend_pchar(zend_ustr(keynames[i])), Length(zend_ustr(keynames[i])) + 1, zend_pchar(zend_ustr(keyvals[i])), 1); end; Exit; end @@ -3202,7 +3158,7 @@ function zend_unregister_functions(functions : {$IFDEF PHP7}P_zend_function_entr var i : integer; {$IFDEF PHP7} - pzs: pzend_string; + pzs: zend_pchar; {$ENDIF} ptr : {$IFDEF PHP7}P_zend_function_entry{$ELSE}pzend_function_entry{$ENDIF}; begin @@ -3481,8 +3437,6 @@ function Z_DVAL(z : pzval) : double; end; function Z_VARREC(z: pzval): TVarRec; - Var - P: zend_ustr; begin if z = nil then begin @@ -3506,16 +3460,8 @@ function Z_VARREC(z: pzval): TVarRec; Result.VExtended^ := z.value.dval; end; IS_STRING: begin - Result.VType := {$IFDEF PHP_UNICE}vtString{$ELSE}vtAnsiString{$ENDIF}; - - SetLength(P, z.value.str.len); - Move(z.value.str.val^, P[1], z.value.str.len); - - {$IFDEF PHP_UNICE} - Result.VUnicodeString := Pointer(p); - {$ELSE} - Result.VAnsiString := Pointer(P); - {$ENDIF} + Result.VType := vtWideString; + Result.VWideString := PWideChar(Z_STRVAL(z)); end; else begin @@ -3524,71 +3470,56 @@ function Z_VARREC(z: pzval): TVarRec; end; end; end; - -function Z_STRUVAL(z : pzval) : UTF8String; +function Z_RawStr(z: pzval): RawByteString; +{$ifdef fpc} +var + s_len: SizeInt; +{$endif} begin - if z = nil then - begin - Result := ''; - exit; - end; - - if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then - begin - SetLength(Result, z.value.str.len); - Move(z.value.str.val^, Result[1], z.value.str.len); - end else - case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of - IS_LONG: Result := IntToStr(z.value.lval); - IS_DOUBLE: Result := FloatToStr(z.value.dval); - IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; - else - Result := ''; + Result := ''; + case z^._type of + IS_BOOL: + begin + if z^.value.lval = 1 then + Result := RawByteString('True') + Else + Result := RawByteString('False'); end; + IS_LONG: + Result := RawByteString(inttostr(z^.value.lval)); + IS_DOUBLE: + Result := RawByteString(FloatToStr(z^.value.dval)); + IS_STRING: + begin + SetString(Result, PAnsiChar(z^.value.str.val), z^.value.str.len); + SetCodePage(Result, CP_UTF8, not IsUTF8String(Result)); + end; + IS_ARRAY: + Result := RawByteString('(array)'); + IS_OBJECT: + Result := RawByteString('[object]'); + IS_RESOURCE: + Result := RawByteString('#resource#id:' + IntToStr(z^.value.lval)); + end; end; - -function Z_STRVAL(z : pzval) : zend_ustr; +function Z_STRUVAL(z : pzval) : UTF8String; begin - if z = nil then - begin - Result := ''; - exit; - end; + Result := UTf8String(Z_RawStr(z)); +end; - if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then - begin - SetLength(Result, z.value.str.len); - Move(z.value.str.val^, Result[1], z.value.str.len); - end else - case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of - IS_LONG: Result := IntToStr(z.value.lval); - IS_DOUBLE: Result := FloatToStr(z.value.dval); - IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; - else - Result := ''; - end; +function Z_STRVAL(z : pzval) : WideString; +begin + Result := WideString(Z_RawStr(z)); end; -function Z_STRWVAL(z : pzval) : String; +function Z_ASTRVAL(z : pzval) : AnsiString; begin - if z = nil then - begin - Result := ''; - exit; - end; + Result := AnsiString(Z_RawStr(z)); +end; - if {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} = IS_STRING then - begin - SetLength(Result, z.value.str.len); - Move(z.value.str.val^, Result[1], z.value.str.len); - end else - case {$IFDEF PHP7}z.u1.v._type{$ELSE}z._type{$ENDIF} of - IS_LONG: Result := IntToStr(z.value.lval); - IS_DOUBLE: Result := FloatToStr(z.value.dval); - IS_BOOL: if z.value.lval = 0 then Result := '' else Result := '1'; - else - Result := ''; - end; +function Z_WSTRVAL(z : pzval) : String; +begin + Result := String(Z_RawStr(z)); end; function Z_CHAR(z: PZval) : zend_uchar; @@ -3627,6 +3558,7 @@ function Z_ACHAR(z: PZVAL): AnsiChar; SetLength(S,1); Result := AnsiChar(S[1]); end; + function Z_WCHAR(z: PZVAL): WideChar; var S: WideString; begin @@ -3679,12 +3611,12 @@ function Z_OBJ_HANDLE(z :pzval) : {$IFDEF PHP7} P_zend_object_handlers {$ELSE} z Result := {$IFDEF PHP7}z.value.obj.handlers{$ELSE}z.value.obj.handle{$ENDIF}; end; -function Z_OBJ_HT(z : pzval) : {$IFDEF PHP7}hzend_types.P_zend_object_handlers{$ELSE}pzend_object_handlers{$ENDIF}; +function Z_OBJ_HT(z : pzval) : pzend_object_handlers; begin Result := z.value.obj.handlers; end; -function Z_OBJPROP(z : pzval;TSRMLS_DC:pointer=nil) : {$IFDEF PHP7}hzend_types.PHashTable{$ELSE}PHashTable{$ENDIF}; +function Z_OBJPROP(z : pzval;TSRMLS_DC:pointer=nil) : {$IFDEF PHP7} PZend_Array {$ELSE} PHashTable {$ENDIF}; {$IFDEF PHP7} begin Result := Z_OBJ_HT(z)^.get_properties(z); @@ -3726,7 +3658,7 @@ function zend_hash_add_or_update(ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{ nKeyLength : uint; pData : {$IFDEF PHP7}pzval{$ELSE}pointer{$ENDIF}; nDataSize : uint; pDes : pointer; flag : integer) : integer; {$IFDEF PHP7} -var pz: Pzend_string; +var pz: zend_pchar; {$ENDIF} begin {$IFDEF PHP7} @@ -3750,7 +3682,7 @@ function zend_hash_init_ex (ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDI {$ENDIF} -{$IFNDEF PHP_UNICE} +{$IFNDEF PHP_UNICODE} function AnsiFormat(const Format: AnsiString; const Args: array of const): AnsiString; begin Result := Sysutils.Format(Format, Args); diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 0de67d3..a9c2d43 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -495,12 +495,12 @@ interface {$ENDIF} zend_uint = UIntPtr; zend_bool = boolean; - zend_uchar = {$IFDEF PHP_UNICE}Utf8Char{$ELSE}AnsiChar{$ENDIF}; - zend_ustr = {$IFDEF PHP_UNICE}Utf8String{$ELSE}AnsiString{$ENDIF}; + zend_uchar = {$IF Defined(PHP_UNICODE)}Utf8Char{$ELSE}AnsiChar{$ENDIF}; + zend_ustr = {$IF Defined(PHP_UNICODE)}UTF8String{$ELSE}AnsiString{$ENDIF}; zend_ulong = ULongPtr; zend_long = IntPtr; - zend_pchar = {$IFDEF PHP_UNICE}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; - zend_pstr = {$IFDEF PHP_UNICE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; + zend_pchar = {$IF Defined(PHP_UNICODE)}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; + zend_pstr = {$IF Defined(PHP_UNICODE)}PUtf8String{$ELSE}PAnsiString{$ENDIF}; {$IFDEF PHP7} _zend_refcounted_h = record refcount : cardinal; @@ -529,14 +529,13 @@ _zend_string = record P_zend_refcounted = ^_zend_refcounted; zend_string = _zend_string; P_zend_string = ^_zend_string; + pzend_string = ^_zend_string; + {$ELSE} + pzend_string = zend_pchar; {$ENDIF} zend_ushort = word; unsigned_char = byte; { Common Types } -{$IFNDEF PHP7} -type - pzend_string = {$IFDEF PHP_UNICE}PUTF8Char{$ELSE}PAnsiChar{$ENDIF}; -{$ENDIF} type uint = longword; PINT = ^Integer; @@ -965,7 +964,7 @@ zvalue_value = record 0: (lval: zend_long); 1: (dval: double); 2: (str: record - val: zend_pchar; + val: PUTF8Char;// zend_pchar; len: integer; end); 3: (ht: PHashTable); diff --git a/Source/hzend_types.pas b/Source/hzend_types.pas index e079681..573b976 100644 --- a/Source/hzend_types.pas +++ b/Source/hzend_types.pas @@ -205,11 +205,11 @@ interface uint32_t = CARDINAL; - zend_pchar = {$IFDEF PHP_UNICE}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; - zend_pstr = {$IFDEF PHP_UNICE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; + zend_pchar = {$IFDEF PHP_UNICODE}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; + zend_pstr = {$IFDEF PHP_UNICODE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; - //zend_uchar = {$IFDEF PHP_UNICE}Utf8Char{$ELSE}AnsiChar{$ENDIF}; - zend_ustr = {$IFDEF PHP_UNICE}Utf8String{$ELSE}AnsiString{$ENDIF}; + //zend_uchar = {$IFDEF PHP_UNICODE}Utf8Char{$ELSE}AnsiChar{$ENDIF}; + zend_ustr = {$IFDEF PHP_UNICODE}Utf8String{$ELSE}AnsiString{$ENDIF}; diff --git a/Source/php4AppIntf.pas b/Source/php4AppIntf.pas index ffb1b2b..ef7a952 100644 --- a/Source/php4AppIntf.pas +++ b/Source/php4AppIntf.pas @@ -12,8 +12,7 @@ unit php4AppIntf; interface -type -zend_pchar = {$IF DEFINED(Unicode)} PUTF8Char {$ELSE} PAnsiChar {$ENDIF}; +uses ZendTypes; function InitRequest : integer; stdcall; procedure DoneRequest(RequestID : integer); stdcall; procedure RegisterVariable(RequestID : integer; AName : zend_pchar; AValue : zend_pchar); stdcall; diff --git a/Source/php4AppUnit.pas b/Source/php4AppUnit.pas index 459d395..b2b78c1 100644 --- a/Source/php4AppUnit.pas +++ b/Source/php4AppUnit.pas @@ -234,7 +234,7 @@ procedure PrepareResult(RequestID : integer; TSRMLS_D : pointer); if zend_hash_find(ht, zend_pchar(InfoBlock.VarList.Names[cnt]), strlen(zend_pchar(InfoBlock.VarList.Names[cnt])) + 1, data) = SUCCESS then case data^^^._type of - IS_STRING : InfoBlock.VarList.Values[InfoBlock.VarList.Names[cnt]] := data^^^.value.str.val; + IS_STRING : InfoBlock.VarList.Values[InfoBlock.VarList.Names[cnt]] := Z_STRVAL(data^^); IS_LONG, IS_RESOURCE, IS_BOOL : InfoBlock.VarList.Values[InfoBlock.VarList.Names[cnt]] := IntToStr(data^^^.value.lval); diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 33ffd04..98bfd2b 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -38,9 +38,9 @@ interface uses Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, PHPCommon, WinApi.WinSock, - {$IFDEF PHP7} hzend_types, {$ELSE} ZendTypes, {$ENDIF} PHPTypes, PHPAPI, ZENDAPI, + ZendTypes, PHPTypes, PHPAPI, ZENDAPI, DelphiFunctions, phpFunctions, strUtils, varUtils, - {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} + {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} {$IFDEF soulengine_build} VCL.Dialogs, {$ENDIF} System.UITypes; @@ -868,11 +868,11 @@ procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; end; {$IFDEF CUTTED_PHP7dll} ShowMessage( - {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} + Format ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])); {$ELSE} php_log_err(zend_pchar( - {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} + {$IFDEF PHP_UNICODE}Format{$ELSE}AnsiFormat{$ENDIF} ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])), p); {$ENDIF} end; @@ -1253,7 +1253,7 @@ procedure TpsvCustomPHP.PrepareResult; begin variable := data^^; convert_to_string(variable); - FVariables[cnt].Value := variable^.value.str.val; + FVariables[cnt].Value := Z_STRVAL(variable); end; finally freemem(data); @@ -1423,10 +1423,11 @@ procedure TpsvCustomPHP.CloseVirtualFile; end; function TpsvCustomPHP.CreateVirtualFile(A_code : zend_ustr): boolean; -{$IFDEF PHP4} var - _handles : array[0..1] of THandle; +{$IFDEF PHP4} +_handles : array[0..1] of THandle; {$ENDIF} +sc:PUTF8Char; begin Result := false; @@ -1580,7 +1581,7 @@ procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; if not IsParamTypeCorrect(FParameters[j].ParamType, Params[j]^) then begin zend_error(E_WARNING, zend_pchar( - {$IFDEF PHP_UNICE}Format{$ELSE}AnsiFormat{$ENDIF} + {$IFDEF PHP_UNICODE}Format{$ELSE}AnsiFormat{$ENDIF} ('Wrong parameter type for %s()', [FActiveFunctionName]))); Exit; end; @@ -1671,7 +1672,7 @@ procedure TPHPEngine.PrepareEngine; delphi_sapi_module.register_server_variables := @php_delphi_register_variables; delphi_sapi_module.log_message := @php_delphi_log_message; if FIniPath <> '' then - delphi_sapi_module.php_ini_path_override := PAnsiChar(FIniPath) + delphi_sapi_module.php_ini_path_override := zend_pchar(FIniPath) else delphi_sapi_module.php_ini_path_override := nil; delphi_sapi_module.block_interruptions := nil; @@ -1720,7 +1721,7 @@ procedure TPHPEngine.RegisterConstants; strlen(zend_pchar(ConstantName)) + 1, zend_pchar(ConstantValue), CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); end; - zend_register_bool_constant( zend_pchar('UTF8_SUPPORT'), 13, {$IFDEF PHP_UNICE}TRUE{$ELSE}FALSE{$ENDIF}, + zend_register_bool_constant( zend_pchar('UTF8_SUPPORT'), 13, {$IFDEF PHP_UNICODE}TRUE{$ELSE}FALSE{$ENDIF}, CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); RegisterInternalConstants(TSRMLS_D); end; @@ -1796,7 +1797,7 @@ procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); for cnt := 0 to ALib.Functions.Count - 1 do begin FN := - {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} (ALib.Functions[cnt].FunctionName); if FHash.IndexOf(FN) > -1 then begin @@ -1809,7 +1810,7 @@ procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); begin for cnt := 0 to ALib.Functions.Count - 1 do begin - FN := {$IFDEF PHP_UNICE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + FN := {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} (ALib.Functions[cnt].FunctionName); FHash.AddObject(FN, ALib.Functions[cnt]); end; diff --git a/Source/phpClass.pas b/Source/phpClass.pas index 8e3f286..1074d34 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -18,7 +18,7 @@ interface uses Windows, SysUtils, Classes, PHPCommon, - {$IFDEF PHP_UNICE}WideStrUtils, {$ENDIF} + {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} ZendTypes, ZendAPI, phpTypes, PHPAPI, phpFunctions; @@ -234,7 +234,7 @@ function class_get_property_handler(_object : pzval; member : pzval; _type : int begin retval := emalloc(sizeof(zval)); ZeroMemory(retval, sizeof(zval)); - propname := member^.value.str.val; + propname := Z_STRVAL(member); new(data); try object_properties := Z_OBJPROP(_object); @@ -271,7 +271,7 @@ procedure class_set_property_handler(_object : pzval; member : pzval; value : pz object_properties : PHashTable; param : TClassProperty; begin - propname := member^.value.str.val; + propname := Z_STRVAL(member); new(data); try object_properties := Z_OBJPROP(_object); @@ -288,7 +288,7 @@ procedure class_set_property_handler(_object : pzval; member : pzval; value : pz convert_to_string(value); param := Obj.Properties.ByName(propname); if Assigned(param) then - param.Value := value.value.str.val; + param.Value := Z_STRVAL(value); end; end; @@ -567,7 +567,7 @@ procedure TPHPClass.ProduceInstance(AValue: pzval); procedure TPHPClass.SetClassName(const Value: zend_ustr); begin - FClassName := {$IFDEF PHP_UNICE}UTF8LowerCase(Value){$ELSE}LowerCase(Value){$ENDIF}; + FClassName := {$IFDEF PHP_UNICODE}UTF8LowerCase(Value){$ELSE}LowerCase(Value){$ENDIF}; end; procedure TPHPClass.SetMethods(const Value: TPHPClassmethods); @@ -875,17 +875,17 @@ procedure TPHPClassMethod.SetDisplayName(const Value: string); F: TPHPClassMethod; begin if - {$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, FName) <> 0 then + {$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, FName) <> 0 then begin if Collection <> nil then for I := 0 to Collection.Count - 1 do begin F := TPHPClassMethods(Collection).Items[I]; if (F <> Self) and (F is TPHPClassMethod) and - ({$IFDEF PHP_UNICE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0) then + ({$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0) then raise Exception.Create('Duplicate method name'); end; - FName := {$IFDEF PHP_UNICE}LowerCase(Value){$ELSE}AnsiLowerCase(Value){$ENDIF}; + FName := {$IFDEF PHP_UNICODE}LowerCase(Value){$ELSE}AnsiLowerCase(Value){$ENDIF}; Changed(False); end; end; From fd245b246a56e81dd7cc077a0bde79a15ac914d7 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 14:38:02 +0200 Subject: [PATCH 19/35] Fixes --- Source/ZENDAPI.pas | 13 +++++++++++-- Source/ZendTypes.pas | 2 +- Source/phpClass.pas | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 2a965f2..2c50f1f 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -3437,6 +3437,7 @@ function Z_DVAL(z : pzval) : double; end; function Z_VARREC(z: pzval): TVarRec; +var P: zend_ustr; begin if z = nil then begin @@ -3460,8 +3461,16 @@ function Z_VARREC(z: pzval): TVarRec; Result.VExtended^ := z.value.dval; end; IS_STRING: begin - Result.VType := vtWideString; - Result.VWideString := PWideChar(Z_STRVAL(z)); + Result.VType := {$IFDEF PHP_UNICODE}vtString{$ELSE}vtAnsiString{$ENDIF}; + + SetLength(P, z.value.str.len); + Move(z.value.str.val^, P[1], z.value.str.len); + + {$IFDEF PHP_UNICODE} + Result.VUnicodeString := Pointer(P); + {$ELSE} + Result.VAnsiString := Pointer(P); + {$ENDIF} end; else begin diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index a9c2d43..252446a 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -964,7 +964,7 @@ zvalue_value = record 0: (lval: zend_long); 1: (dval: double); 2: (str: record - val: PUTF8Char;// zend_pchar; + val: zend_pchar; len: integer; end); 3: (ht: PHashTable); diff --git a/Source/phpClass.pas b/Source/phpClass.pas index 1074d34..a51fceb 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -885,7 +885,7 @@ procedure TPHPClassMethod.SetDisplayName(const Value: string); ({$IFDEF PHP_UNICODE}CompareText{$ELSE}AnsiCompareText{$ENDIF}(Value, F.Name) = 0) then raise Exception.Create('Duplicate method name'); end; - FName := {$IFDEF PHP_UNICODE}LowerCase(Value){$ELSE}AnsiLowerCase(Value){$ENDIF}; + FName := {$IFDEF PHP_UNICODE}UTF8LowerCase(Value){$ELSE}AnsiLowerCase(Value){$ENDIF}; Changed(False); end; end; From 93920a67e7941078c521c974bfb8bb80265acd10 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 15:30:36 +0200 Subject: [PATCH 20/35] Fixes #2 --- Source/PHPFunctions.pas | 9 ++++++++- Source/ZENDAPI.pas | 13 ++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Source/PHPFunctions.pas b/Source/PHPFunctions.pas index 07abf5b..eef5c76 100644 --- a/Source/PHPFunctions.pas +++ b/Source/PHPFunctions.pas @@ -611,7 +611,14 @@ function TZendVariable.GetAsString: zend_ustr; end; case {$IFDEF PHP7}FValue^.u1.v._type{$ELSE} FValue^._type{$ENDIF} of - IS_STRING : result := Z_STRVAL(FValue); + IS_STRING : begin + try + SetLength(Result, FValue^.value.str.len); + Move(FValue^.value.str.val^, Result[1], FValue^.value.str.len); + except + Result := ''; + end; + end; IS_DOUBLE : result := FloatToStr(FValue^.value.dval); IS_LONG : result := IntToStr(FValue^.value.lval); IS_NULL : result := ''; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 2c50f1f..5ecb63b 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -1552,11 +1552,7 @@ procedure VariantToZend(const Value:Variant;z:pzval; end; varUString : //Peter Enz - begin - S := string(TVarData(Value).VUString); - - ZVAL_STRING(z, zend_pchar(zend_ustr(S)), true); - end; + ZVAL_RawStr(z, RawByteString(TVarData(Value).VUString), true); varOleStr : //Peter Enz begin @@ -1629,12 +1625,7 @@ procedure VariantToZend(const Value:Variant;z:pzval; end; end; - varUStrArg : //Peter Enz - begin - S := string(TVarData(Value).VUString); - - ZVAL_STRING(z, zend_pchar(zend_ustr(S)), true); - end; + varUStrArg : ZVAL_RawStr(z, RawByteString(TVarData(Value).VUString), true); varInt64 : ZVALVAL(z, TVarData(Value).VInt64); varUInt64 : ZVALVAL(z, TVarData(Value).VUInt64); varShortInt : ZVALVAL(z, Integer(TVarData(Value).VShortInt)); From a5a7b69b7a3a81740fc2b59f72ae191ee374d3a6 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 16:52:29 +0200 Subject: [PATCH 21/35] zend_ustr --- Source/ZENDAPI.pas | 10 ++++------ Source/php4delphi.pas | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 5ecb63b..43948b9 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -1538,9 +1538,8 @@ procedure VariantToZend(const Value:Variant;z:pzval; Exit; end; case TVarData(Value).VType of - varString : //Peter Enz + varString : begin - // ShowMessage('h_e'); if Assigned ( TVarData(Value).VString ) then begin ZVAL_STRINGA(z, AnsiString(PAnsiChar(TVarData(Value).VString)), true); @@ -1551,10 +1550,10 @@ procedure VariantToZend(const Value:Variant;z:pzval; end; end; - varUString : //Peter Enz + varUString : ZVAL_RawStr(z, RawByteString(TVarData(Value).VUString), true); - varOleStr : //Peter Enz + varOleStr : begin if Assigned ( TVarData(Value).VOleStr ) then begin @@ -1612,9 +1611,8 @@ procedure VariantToZend(const Value:Variant;z:pzval; else ZVALVAL(z, integer(TObject(TVarData(Value).VPointer^))); end; - varStrArg : //Peter Enz + varStrArg : begin - //ShowMessage('h_e_e'); if Assigned ( TVarData(Value).VString ) then begin ZVAL_STRINGA(z, AnsiString(PAnsiChar(TVarData(Value).VString)), true); diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 98bfd2b..d5e6a95 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -198,7 +198,7 @@ TCustomPHPLibrary = class(TPHPComponent) TPHPEngineInitEvent = procedure(Sender:TObject;TSRMLS_DC:Pointer) of object; TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) private - FINIPath : AnsiString; + FINIPath : zend_ustr; FOnEngineStartup : TNotifyEvent; FAddMods : TArray; FOnEngineShutdown : TNotifyEvent; @@ -264,7 +264,7 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) property OnEngineShutdown : TNotifyEvent read FOnEngineShutdown write FOnEngineShutdown; property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; - property IniPath : AnsiString read FIniPath write FIniPath; + property IniPath : zend_ustr read FIniPath write FIniPath; {$IFNDEF PHP540} property SafeMode : boolean read FSafeMode write FSafeMode default false; property SafeModeGid : boolean read FSafeModeGid write FSafeModeGid default false; From 978b112c9c283e3a1acb28dd998d2ff45e957984 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Wed, 12 Feb 2020 17:57:41 +0200 Subject: [PATCH 22/35] Some small fixes One more step #7 to remove assembler --- Source/Demos/psvPHP/console/phpcon.dpr | 2 +- Source/ZENDAPI.pas | 1 - Source/php4delphi.pas | 5 +---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index afe658b..e6ab66e 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -42,7 +42,7 @@ var begin if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @p) = 0 then begin - ZVAL_STRING(z,'🐆🐆🐆 .-=WPD=-. 🐆🐆🐆',true); + ZVAL_STRINGW(p,'🐆🐆🐆 .-=WPD=-. 🐆🐆🐆',true); end; end; begin diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 43948b9..531519b 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -1530,7 +1530,6 @@ procedure VariantToZend(const Value:Variant;z:pzval; cobj: TObjectAConvertMethod=nil); var W : WideString; - S: String; begin if VarIsEmpty(value) or VarIsNull(Value) then begin diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index d5e6a95..e55b8ae 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -1616,10 +1616,7 @@ procedure TPHPEngine.PrepareIniEntry; if FHandleErrors then begin - // p := integer(GetProcAddress(PHPLib, 'zend_do_print')); - p := GetProcAddress(PHPLib, 'zend_error_cb'); - p2 := @delphi_error_cb; - Move(p, p2, 1); + ppointer(GetProcAddress(PHPLib, 'zend_error_cb'))^ := @delphi_error_cb; end; {$IFNDEF PHP540} if FSafeMode then From 75337d1711d0d88e58adad2ad84dedd576d02e3a Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Sat, 15 Feb 2020 05:04:34 +0200 Subject: [PATCH 23/35] Update ZENDAPI.pas --- Source/ZENDAPI.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 531519b..2b82542 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -1058,7 +1058,7 @@ procedure ZvalVAL(z:pzval; v:Double); z^.u1.v._type {$ELSE} z^._type - {$ENDIF} := IS_LONG; + {$ENDIF} := IS_DOUBLE; z.value.dval := v; End; From 14d9e47e7a4d5b02e531cc2dc9a0e23519fd6478 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Sat, 15 Feb 2020 07:22:18 +0200 Subject: [PATCH 24/35] actualized calls --- Source/phpClass.pas | 2 +- Source/phpModules.pas | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/phpClass.pas b/Source/phpClass.pas index a51fceb..3770112 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -367,7 +367,7 @@ function class_call_method(method : zend_pchar; ht : integer; return_value : pzv M.ZendVar.AsZendVariable := return_value; //direct access to zend variable M.FOnExecute(Obj, M.Parameters, M.ReturnValue, M.FZendVar.AsZendVariable, this_ptr, TSRMLS_DC); if M.ZendVar.ISNull then //perform variant conversion - variant2zval(M.ReturnValue, return_value); + VariantToZend(M.ReturnValue, return_value); end; end; diff --git a/Source/phpModules.pas b/Source/phpModules.pas index 04dcf0a..6c12fa1 100644 --- a/Source/phpModules.pas +++ b/Source/phpModules.pas @@ -265,7 +265,7 @@ function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointe procedure DispatchRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; return_value_used : integer; TSRMLS_DC : pointer); cdecl; begin - ZVAL(return_value); + ZvalVal(return_value); if Assigned(Application) then try Application.HandleRequest(ht, return_value, return_value_ptr, this_ptr, return_value_used, TSRMLS_DC); @@ -407,22 +407,30 @@ function TCustomPHPExtension.FunctionByName( procedure TCustomPHPExtension.phpwrite(str: zend_pchar; str_len: integer); begin +{$IFNDEF PHP550} php_body_write(str, str_len, FTSRMLS); +{$ENDIF} end; procedure TCustomPHPExtension.phpwrite_h(str: zend_pchar; str_len: integer); begin +{$IFNDEF PHP550} php_header_write(str, str_len, FTSRMLS); +{$ENDIF} end; procedure TCustomPHPExtension.puts(str: zend_pchar); begin +{$IFNDEF PHP550} php_body_write(str, strlen(str), FTSRMLS); +{$ENDIF} end; procedure TCustomPHPExtension.puts_h(str: zend_pchar); begin +{$IFNDEF PHP550} php_header_write(str, strlen(str), FTSRMLS); +{$ENDIF} end; procedure TCustomPHPExtension.ReportError(ErrType: integer; @@ -466,6 +474,7 @@ procedure DoneVCLApplication; VCL.Forms.Application.ShowHint := False; VCL.Forms.Application.Destroying; VCL.Forms.Application.DestroyComponents; + {$ENDIF} except end; end; @@ -702,7 +711,7 @@ procedure TPHPApplication.HandleRequest(ht: integer; return_value : pzval; retu FZendVar.AsZendVariable := return_value; AFunction.OnExecute(DataModule, FParameters, ReturnValue, FZendVar, TSRMLS_DC); if FZendVar.ISNull then - variant2zval(ReturnValue, return_value); + VariantToZend(ReturnValue, return_value); finally FZendVar.Free; end; From d30902d424ec8d8c18f9e0498595040ed390e0ea Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Tue, 18 Feb 2020 08:24:33 +0200 Subject: [PATCH 25/35] some changes --- .../MultithreadSample.dproj | 275 +++++++++++------- .../MultithreadSample.otares | Bin 0 -> 96 bytes .../Multithread simple/MultithreadSample.res | Bin 1860 -> 4172 bytes .../MultithreadSample_Icon.ico | Bin 0 -> 1718 bytes .../MultithreadSample_Icon1.ico | Bin 0 -> 1718 bytes .../MultithreadSample_Icon2.ico | Bin 0 -> 1718 bytes .../MultithreadSample_Icon3.ico | Bin 0 -> 1718 bytes .../MultithreadSample_Icon4.ico | Bin 0 -> 1718 bytes Source/Demos/psvPHP/console/phpcon.dpr | 1 + Source/Demos/psvPHP/console/phpcon.dproj | 51 ++-- Source/PHPAPI.pas | 8 +- Source/ZENDAPI.pas | 86 +++--- Source/hzend_types.pas | 1 - ...4delphi Delphi 10.1 Berlin.groupproj.local | 2 +- .../packages/php4delphi Delphi 10.tvsconfig | 2 + Source/php4DelphiD2010.identcache | Bin 1252 -> 1204 bytes Source/php4DelphiD2010.stat | 6 +- Source/php4DelphiR2010.identcache | Bin 856 -> 823 bytes Source/php4DelphiR2010.stat | 6 +- Source/php4delphi.pas | 122 ++------ Source/phpAbout.dfm | 2 +- readme.txt | 8 +- 22 files changed, 293 insertions(+), 277 deletions(-) create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.otares create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon.ico create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon1.ico create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon2.ico create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon3.ico create mode 100644 Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon4.ico create mode 100644 Source/packages/php4delphi Delphi 10.tvsconfig diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.dproj b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.dproj index 4d406d5..8e2a16e 100644 --- a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.dproj +++ b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.dproj @@ -1,106 +1,169 @@ - - - {94D8351C-D7FA-4AB4-B4FA-8A463EB52A65} - MultithreadSample.dpr - Debug - DCC32 - 12.0 - - - true - - - true - Base - true - - - true - Base - true - - - 00400000 - false - x86 - MultithreadSample.exe - false - false - false - false - - - false - RELEASE;$(DCC_Define) - 0 - false - - - DEBUG;$(DCC_Define) - - - - MainSource - - -
frmMain
-
- - - Base - - - Cfg_2 - Base - - - Cfg_1 - Base - -
- - - Delphi.Personality.12 - VCLApplication - - - - MultithreadSample.dpr - - - False - True - False - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 2057 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - 12 - -
+ + + {94D8351C-D7FA-4AB4-B4FA-8A463EB52A65} + MultithreadSample.dpr + Debug + DCC32 + 18.2 + VCL + True + Win32 + 1 + Application + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace) + MultithreadSample + 2057 + 00400000 + false + x86 + MultithreadSample.exe + false + false + false + false + + + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + true + $(BDS)\bin\default_app.manifest + MultithreadSample_Icon4.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + 1033 + true + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName) + Debug + + + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + MultithreadSample_Icon4.ico + $(BDS)\bin\default_app.manifest + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + true + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + true + true + + + DEBUG;$(DCC_Define) + + + true + true + + + + MainSource + + +
frmMain
+
+ + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + +
+ + + Delphi.Personality.12 + VCLApplication + + + + MultithreadSample.dpr + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 2057 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + True + False + + + 12 + + +
diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.otares b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.otares new file mode 100644 index 0000000000000000000000000000000000000000..743599575b02e97248bade49ed2e3eabafe25a0a GIT binary patch literal 96 zcmZQzU|>)H;{X347|28cOhBFu5dZ(r#Sp;Y!{Epe!r;c>&k)4m3uHM0X?F%!AS)QE O%YcEC1!e#vkO2UW7YiT& literal 0 HcmV?d00001 diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.res b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample.res index c791b86b17d95defb4193c5c4f343c6fc35628c0..8afa5b2c3cd86b7e1c5d983078f9c252305bac54 100644 GIT binary patch literal 4172 zcmbuBPi))B6~>>lZXp}l!s#LCAqOte!=?ZwN<+y~ASZB=T|nr%Ycx)JOeu24CMuCy zlJXz41$0V$Tws9!yzOCIpod-p?6H7PJv2Ngm*$iL3j_t$xdm8YXTKSWl5MP!U_)t! zGjHC!?>BFTl!%B76e){>=BdlRP>!#_XF-qIw6s_{*%ur%@6jE)kNP9}Jz72blzxYP z5B0}rtLtBj-+oV|<`*%_`wcxxqym;BQxkm-!vf-^6jMMUZ6jJh1LBArlAs8V1MOpz zLpF6#955)NPw1DJTl(L|oP<0bXM}hG=7w5kgT{!cEGg|^oRdpFG+i3fNNW+IR!+pa z2cHXsEGWnH65*aI>uS$v$}sI6P(4IZKx~79%$6% zfn^9rj=GPL7#6iswU!9>x5}ow*Jl!hmX`?x-e*dk^Kq>Z_lS=F^LJWYT%<~+ zLKiPyq)V4B(dEmR>B^NWWSS;jy?T}I-n~m38yj@<=1uB!IyCud2b0xSY70xWvTU=a`(5E2L~ zz@pQDL4k$g?Q zL4rYoL4rYoK_4eD)bebtQfMhU@tFcuK)A&=$8HmR0g(B{JyD|?ghN5SM;x&`ZZiY zPt_Gt?{xJhfAn)AL&y9T;ubIIlmEH8H};1EW0%KC5QS@Iy=t2V5533_!tFKl?$*av z+cc8Y4SjbIg?!CC;E8$T`uodWH%a)gKR7TDAWYWGaU5Ptyd6Gt6KfcFag;-E>0e8}LbgfpKGFE4dRWR1>Z1idk+iuqWaC)*?L`H0X6s+&LF~7bQk9lo#qg$I< z3h`P&bw*vy?@otK0_%17e8fW^`97E~pfsfG)9lXV%XIhPo(AcG)>Mm54@TG)sIrDR zGluRE#*K0ts?$|fZ$-ml6k4~UFpZ-@GM_Lz0j;X7KJ$^$xQ{IVmLF_If8sbIt!Ag$ zZ#i|x@jOxY#oTk?hTCIz8^XVt8%J^E@g#}j_1N19QtqYWSbNl_ORoLsnvvakZgj5F zc$}oYP((tQ7l_aBmzVW3yDo{IfBRA@?`qU^f`>ZJv~4*sIy-NBfwl4%a7q zmk(yCHH?AkubFPr3wM!|c)nP}7zgW~TJM@E+(E+4=_>W9j0|c}>f03U1kU z+vl7!p9%Y~$jDEXUp-%%HS4V1@3>ae??77geXGqIzU4L?$8I#5qQhJz{Sz17K3~~! z8=}$X%xbcJ$8sE}ZuQ-cXZfv;@3@ZJ;;j8H%GLV$+I7)dZF#FLt8MeT=V`Y(81g)pCwKv#U+YR{-d_{_@^vXa$*v=veq(~#!zbZwX zTANr|2olKI2`M(;%srnd2?==K&d&U9cjmjL^+O&g-XG4aF+u>o`=9;j$j8-O-3D0ZZQfqh&{zAg+J-WIB1WX$A!uF(P$)1)5yZYf-Eg9$@22DtgNia>guYjudmC_&W>ztZOP{5rfh6% zNc*>K_kTQ%>7(RrGrf7<$p>Ytg#Lx}L&<)+tV_QKl z=!Kx57j!0ZbVqk|NANgM;!0dSD=St>t|U@6Dd(Q$F$#mipfD&5i3EefpfD&53PWPT zpfD&53WLIs=rAY@3WLI+Fla@CL*dZi;2VP~DGY0{7%T=$zA`LEaifrt)L_Xr@X&A! z7K0_*0*Aq2a2Om0N45$MgTY`h7@~CshrwVlcz*Fdw2(T(A91!fx&sxp3+uAg)Gja; ziWUkKm)%-A?adf?P^ z*c=Y0ULI|5&;y6VgM$~#<7Sh?;;=XnPQm;HU~x7&iyXmW;bxGBGjUiv`jIU0HN+{P z!BAnSFjN>S3>Aj_oM3PmDhw3{hk-N<*27R?s4!F*NXG};)O?OBD literal 0 HcmV?d00001 diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon1.ico b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon1.ico new file mode 100644 index 0000000000000000000000000000000000000000..43bf0027de8e8ca4a91dc7cc72d11c86ba4bbbf9 GIT binary patch literal 1718 zcmbu9u}d965QoR`0*6>=V`Y(81g)pCwKv#U+YR{-d_{_@^vXa$*v=veq(~#!zbZwX zTANr|2olKI2`M(;%srnd2?==K&d&U9cjmjL^+O&g-XG4aF+u>o`=9;j$j8-O-3D0ZZQfqh&{zAg+J-WIB1WX$A!uF(P$)1)5yZYf-Eg9$@22DtgNia>guYjudmC_&W>ztZOP{5rfh6% zNc*>K_kTQ%>7(RrGrf7<$p>Ytg#Lx}L&<)+tV_QKl z=!Kx57j!0ZbVqk|NANgM;!0dSD=St>t|U@6Dd(Q$F$#mipfD&5i3EefpfD&53PWPT zpfD&53WLIs=rAY@3WLI+Fla@CL*dZi;2VP~DGY0{7%T=$zA`LEaifrt)L_Xr@X&A! z7K0_*0*Aq2a2Om0N45$MgTY`h7@~CshrwVlcz*Fdw2(T(A91!fx&sxp3+uAg)Gja; ziWUkKm)%-A?adf?P^ z*c=Y0ULI|5&;y6VgM$~#<7Sh?;;=XnPQm;HU~x7&iyXmW;bxGBGjUiv`jIU0HN+{P z!BAnSFjN>S3>Aj_oM3PmDhw3{hk-N<*27R?s4!F*NXG};)O?OBD literal 0 HcmV?d00001 diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon2.ico b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon2.ico new file mode 100644 index 0000000000000000000000000000000000000000..43bf0027de8e8ca4a91dc7cc72d11c86ba4bbbf9 GIT binary patch literal 1718 zcmbu9u}d965QoR`0*6>=V`Y(81g)pCwKv#U+YR{-d_{_@^vXa$*v=veq(~#!zbZwX zTANr|2olKI2`M(;%srnd2?==K&d&U9cjmjL^+O&g-XG4aF+u>o`=9;j$j8-O-3D0ZZQfqh&{zAg+J-WIB1WX$A!uF(P$)1)5yZYf-Eg9$@22DtgNia>guYjudmC_&W>ztZOP{5rfh6% zNc*>K_kTQ%>7(RrGrf7<$p>Ytg#Lx}L&<)+tV_QKl z=!Kx57j!0ZbVqk|NANgM;!0dSD=St>t|U@6Dd(Q$F$#mipfD&5i3EefpfD&53PWPT zpfD&53WLIs=rAY@3WLI+Fla@CL*dZi;2VP~DGY0{7%T=$zA`LEaifrt)L_Xr@X&A! z7K0_*0*Aq2a2Om0N45$MgTY`h7@~CshrwVlcz*Fdw2(T(A91!fx&sxp3+uAg)Gja; ziWUkKm)%-A?adf?P^ z*c=Y0ULI|5&;y6VgM$~#<7Sh?;;=XnPQm;HU~x7&iyXmW;bxGBGjUiv`jIU0HN+{P z!BAnSFjN>S3>Aj_oM3PmDhw3{hk-N<*27R?s4!F*NXG};)O?OBD literal 0 HcmV?d00001 diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon3.ico b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon3.ico new file mode 100644 index 0000000000000000000000000000000000000000..43bf0027de8e8ca4a91dc7cc72d11c86ba4bbbf9 GIT binary patch literal 1718 zcmbu9u}d965QoR`0*6>=V`Y(81g)pCwKv#U+YR{-d_{_@^vXa$*v=veq(~#!zbZwX zTANr|2olKI2`M(;%srnd2?==K&d&U9cjmjL^+O&g-XG4aF+u>o`=9;j$j8-O-3D0ZZQfqh&{zAg+J-WIB1WX$A!uF(P$)1)5yZYf-Eg9$@22DtgNia>guYjudmC_&W>ztZOP{5rfh6% zNc*>K_kTQ%>7(RrGrf7<$p>Ytg#Lx}L&<)+tV_QKl z=!Kx57j!0ZbVqk|NANgM;!0dSD=St>t|U@6Dd(Q$F$#mipfD&5i3EefpfD&53PWPT zpfD&53WLIs=rAY@3WLI+Fla@CL*dZi;2VP~DGY0{7%T=$zA`LEaifrt)L_Xr@X&A! z7K0_*0*Aq2a2Om0N45$MgTY`h7@~CshrwVlcz*Fdw2(T(A91!fx&sxp3+uAg)Gja; ziWUkKm)%-A?adf?P^ z*c=Y0ULI|5&;y6VgM$~#<7Sh?;;=XnPQm;HU~x7&iyXmW;bxGBGjUiv`jIU0HN+{P z!BAnSFjN>S3>Aj_oM3PmDhw3{hk-N<*27R?s4!F*NXG};)O?OBD literal 0 HcmV?d00001 diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon4.ico b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Multithread simple/MultithreadSample_Icon4.ico new file mode 100644 index 0000000000000000000000000000000000000000..43bf0027de8e8ca4a91dc7cc72d11c86ba4bbbf9 GIT binary patch literal 1718 zcmbu9u}d965QoR`0*6>=V`Y(81g)pCwKv#U+YR{-d_{_@^vXa$*v=veq(~#!zbZwX zTANr|2olKI2`M(;%srnd2?==K&d&U9cjmjL^+O&g-XG4aF+u>o`=9;j$j8-O-3D0ZZQfqh&{zAg+J-WIB1WX$A!uF(P$)1)5yZYf-Eg9$@22DtgNia>guYjudmC_&W>ztZOP{5rfh6% zNc*>K_kTQ%>7(RrGrf7<$p>Ytg#Lx}L&<)+tV_QKl z=!Kx57j!0ZbVqk|NANgM;!0dSD=St>t|U@6Dd(Q$F$#mipfD&5i3EefpfD&53PWPT zpfD&53WLIs=rAY@3WLI+Fla@CL*dZi;2VP~DGY0{7%T=$zA`LEaifrt)L_Xr@X&A! z7K0_*0*Aq2a2Om0N45$MgTY`h7@~CshrwVlcz*Fdw2(T(A91!fx&sxp3+uAg)Gja; ziWUkKm)%-A?adf?P^ z*c=Y0ULI|5&;y6VgM$~#<7Sh?;;=XnPQm;HU~x7&iyXmW;bxGBGjUiv`jIU0HN+{P z!BAnSFjN>S3>Aj_oM3PmDhw3{hk-N<*27R?s4!F*NXG};)O?OBD literal 0 HcmV?d00001 diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index e6ab66e..1ba3210 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -19,6 +19,7 @@ uses php4delphi, zendAPI, ZENDTypes; + var php : TpsvPHP; Engine : TPHPEngine; diff --git a/Source/Demos/psvPHP/console/phpcon.dproj b/Source/Demos/psvPHP/console/phpcon.dproj index 06928a9..f329cbf 100644 --- a/Source/Demos/psvPHP/console/phpcon.dproj +++ b/Source/Demos/psvPHP/console/phpcon.dproj @@ -8,7 +8,7 @@ Console None 18.2 - Win32 + Win64
true @@ -39,11 +39,23 @@ true true + + true + Cfg_1 + true + true + true Base true + + true + Cfg_2 + true + true + true Cfg_2 @@ -116,12 +128,20 @@ 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) + + 1033 + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + true DEBUG;$(DCC_Define) false + + info.php + + info.php 1033 CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= @@ -150,14 +170,9 @@ phpcon.dpr - File C:\Program Files (x86)\FastReports\LibD24\dclfrx24.bpl not found - File C:\Program Files (x86)\FastReports\LibD24\dclfrxDB24.bpl not found - File C:\Program Files (x86)\FastReports\LibD24\dclfrxe24.bpl not found - File C:\Program Files (x86)\FastReports\LibD24\dclfrxtee24.bpl not found Embarcadero C++Builder Office 2000 Servers Package Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components - BCEditor Components @@ -186,22 +201,13 @@ true - + phpcon.exe true - - - 0 - .dll;.bpl - - - 1 - .dylib - - + Contents\Resources @@ -540,7 +546,16 @@ 1 - + + + 0 + .dll;.bpl + + + 1 + .dylib + + diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 28b154e..186c619 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -66,7 +66,7 @@ interface sapi_add_header_ex: function(header_line : zend_pchar; header_line_len : uint; duplicated : zend_bool; replace : zend_bool; TSRMLS_DC : pointer) : integer; cdecl; - php_execute_script : function (primary_file: PZendFileHandle; TSRMLS_D : pointer) : {$IFDEF CPUX64} Int64 {$ELSE} Integer{$ENDIF}; cdecl; + php_execute_script : function (primary_file: PZendFileHandle; TSRMLS_D : pointer) : longint; cdecl; php_handle_aborted_connection: procedure; cdecl; @@ -345,7 +345,7 @@ function GetSAPIGlobals : Psapi_globals_struct; begin Result := nil; if Assigned(sapi_globals_id) then - Result := __asm_fetchval(IntPtr(sapi_globals_id^), tsrmls_fetch); + Result := __fgsapi(pointer(sapi_globals_id^), tsrmls_fetch); end; function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; var @@ -354,7 +354,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; Result := nil; sapi_global_id := GetProcAddress(PHPLib, 'sapi_globals_id'); if Assigned(sapi_global_id) then - Result := __asm_fetchval(IntPtr(sapi_globals_id^), TSRMLS_DC); + Result := __fgsapi(pointer(sapi_globals_id^), TSRMLS_DC); end; function GetStringOf(const V: TVarData): string; @@ -407,7 +407,7 @@ function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; begin Result := nil; if Assigned(core_globals_id) then - Result := Pphp_Core_Globals(__asm_fetchval(IntPtr(core_globals_id^), TSRMLS_DC)); + Result := Pphp_Core_Globals(__fgsapi(pointer(core_globals_id^), TSRMLS_DC)); end; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 2b82542..6415459 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -69,6 +69,9 @@ interface EPHP4DelphiException = class(Exception) constructor Create(const Msg: zend_ustr); end; + EPHP4DelphiHookException = class(Exception) + constructor Create(const Msg: zend_ustr); + end; align_test = record case Integer of @@ -82,14 +85,9 @@ align_test = record function AnsiFormat(const Format: AnsiString; const Args: array of const): AnsiString; {$ENDIF} function Lfunc(var Func: Pointer; addr: LPCWSTR): Bool; +function HFunc(const Func: Pointer; addr: LPCWSTR): Bool; function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; -function __asm_fetchval -{$IFDEF CPUX64} -(val_id: int64; tsrmls_dc_p: pointer) -{$ELSE} -(val_id: integer; tsrmls_dc_p: pointer) -{$ENDIF} -: pointer; +function __fgsapi(sapi_globals_value:pointer; tsrmls_dc:pointer): Pointer; procedure UnloadZEND; function ZENDLoaded: boolean; @@ -294,38 +292,38 @@ procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} // zend_constants.h var zend_get_constant : function(name: zend_pchar; name_len: uint; var result: zval; - TSRMLS_DC: Pointer): IntPtr; cdecl; + TSRMLS_DC: Pointer): integer; cdecl; zend_register_null_constant : procedure(name: zend_pchar; name_len: uint; - flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; zend_register_bool_constant : procedure(name: zend_pchar; name_len: uint; - bval: zend_bool; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + bval: zend_bool; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; zend_register_long_constant : procedure(name: zend_pchar; name_len: uint; - lval: Longint; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + lval: Longint; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; zend_register_double_constant : procedure(name: zend_pchar; name_len: uint; - dval: Double; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + dval: Double; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; zend_register_string_constant : procedure(name: zend_pchar; name_len: uint; - strval: zend_pchar; flags: IntPtr; module_number: IntPtr; TSRMLS_DC: Pointer); cdecl; + strval: zend_pchar; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; zend_register_stringl_constant : procedure(name: zend_pchar; name_len: uint; - strval: zend_pchar; strlen: uint; flags: IntPtr; module_number: IntPtr; + strval: zend_pchar; strlen: uint; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; - zend_register_constant : function(var c: zend_constant; TSRMLS_DC: Pointer): IntPtr; cdecl; + zend_register_constant : function(var c: zend_constant; TSRMLS_DC: Pointer): integer; cdecl; zend_register_auto_global : {$IFDEF PHP700} - function(name:Pzend_string; jit:boolean; instance_init_callback:Pointer): IntPtr; cdecl; + function(name:Pzend_string; jit:boolean; instance_init_callback:Pointer): integer; cdecl; {$ELSE} {$IFDEF PHP5} - function(name: zend_pchar; name_len: uint; jit:boolean; instance_init_callback: Pointer; TSRMLS_DC: Pointer): IntPtr; cdecl; + function(name: zend_pchar; name_len: uint; jit:boolean; instance_init_callback: Pointer; TSRMLS_DC: Pointer): integer; cdecl; zend_activate_auto_globals: procedure(TSRMLS_C: Pointer); cdecl; {$ELSE} - function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): IntPtr; cdecl; + function(name: zend_pchar; name_len: uint; callback: Pointer; TSRMLS_DC: Pointer): integer; cdecl; {$ENDIF} {$ENDIF} procedure REGISTER_MAIN_LONG_CONSTANT(name: zend_pchar; lval: longint; flags: integer; TSRMLS_DC: Pointer); @@ -2163,6 +2161,24 @@ function Lfunc(var Func: Pointer; addr: LPCWSTR): BOOL; Result := False; end; end; +function HFunc(const Func: Pointer; addr: LPCWSTR): BOOL; +var fr: FARPROC; +begin + Result := True; + + fr := GetProcAddress(PHPLib, addr); + if (Func = nil) or (fr = nil) then + begin + {$IFNDEF QUIET_LOAD} + raise EPHP4DelphiHookException.Create(addr); + {$ENDIF} + Result := False; + end else + begin + if ppointer(fr)^ <> Func then + ppointer(fr)^ := Func; + end; +end; procedure zend_copy_constant(c: zend_constant); begin c.name := zend_strndup(c.name, c.name_len - 1); @@ -3083,11 +3099,7 @@ function zend_get_parameters_my(number: integer; var Params: pzval_array; TSRMLS begin Params[i]^ := p^^; if i <> number then - {$IFDEF CPUX64} p^ := ppzval( integer(p^) + sizeof(ppzval) ); - {$ELSE} - inc(integer(p^), sizeof(ppzval)); - {$ENDIF} end; efree(p); @@ -3116,6 +3128,10 @@ constructor EPHP4DelphiException.Create(const Msg: zend_ustr); begin inherited Create('Unable to link '+ Msg+' function'); end; +constructor EPHP4DelphiHookException.Create(const Msg: zend_ustr); +begin + inherited Create('Unable to hook '+ Msg+' function'); +end; {procedure zenderror(Error : zend_pchar); begin @@ -3245,25 +3261,11 @@ function zend_register_functions(functions : {$IFDEF PHP7}P_zend_function_entry{ end; -function __asm_fetchval(val_id: IntPtr; tsrmls_dc_p: pointer) -: pointer; assembler; register; -{$IFDEF CPUX64} -asm - mov rcx, val_id - mov rdx, dword64 ptr tsrmls_dc_p - mov rax, dword64 ptr [rdx] - mov rcx, dword64 ptr [rax+rcx*8-8] - mov Result, rcx -end; -{$ELSE} -asm - mov ecx, val_id - mov edx, dword ptr tsrmls_dc_p - mov eax, dword ptr [edx] - mov ecx, dword ptr [eax+ecx*4-4] - mov Result, ecx +function __fgsapi(sapi_globals_value:pointer; tsrmls_dc:pointer): Pointer; +type P = ^IntPtr; +begin + Result := ppointer( P(tsrmls_dc)^ + IntPtr(sapi_globals_value)*Sizeof(Pointer) - Sizeof(Pointer) )^; end; -{$ENDIF} function GetGlobalResource(resource_name: AnsiString) : pointer; var @@ -3274,7 +3276,7 @@ function GetGlobalResource(resource_name: AnsiString) : pointer; global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - Result := __asm_fetchval(IntPtr(global_id^), tsrmls_fetch); + Result := __fgsapi(pointer(global_id^), tsrmls_fetch); end; except Result := nil; @@ -3290,7 +3292,7 @@ function GetGlobalResourceDC(resource_name: AnsiString;TSRMLS_DC:pointer) : poin global_id := GetProcAddress(PHPLib, zend_pchar(resource_name)); if Assigned(global_id) then begin - Result := __asm_fetchval(IntPtr(global_id^), TSRMLS_DC); + Result := Pointer( __fgsapi(pointer(global_id^), TSRMLS_DC) ); end; except Result := nil; diff --git a/Source/hzend_types.pas b/Source/hzend_types.pas index 573b976..c2e76e9 100644 --- a/Source/hzend_types.pas +++ b/Source/hzend_types.pas @@ -3045,7 +3045,6 @@ Tsmart_str = record zend_long_to_str:function(num:zend_long):Pzend_string; cdecl; ZvalGetPChar:function(z:pzval):zend_pchar; cdecl; -ZvalSetPChar:procedure(z:pzval; p:zend_pchar; l, b:integer); cdecl; read_property22:function(elem:pzval; name:zend_pchar; flags:Integer):pzval; cdecl; isset_property:function(_object:pzval; property_name:zend_pchar):Integer; cdecl; diff --git a/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local b/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local index 9b88d43..dbd6596 100644 --- a/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local +++ b/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local @@ -6,6 +6,6 @@ 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - + diff --git a/Source/packages/php4delphi Delphi 10.tvsconfig b/Source/packages/php4delphi Delphi 10.tvsconfig new file mode 100644 index 0000000..d430780 --- /dev/null +++ b/Source/packages/php4delphi Delphi 10.tvsconfig @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Source/php4DelphiD2010.identcache b/Source/php4DelphiD2010.identcache index a7374d782c74209272df63f52365e47f88bf526f..4f6504a0b4d282d4dec9190c7477d605440ffac2 100644 GIT binary patch literal 1204 zcmb`H$qs@r6h-+2zr>X*93lY~6EwsjB&HjN7pVc-bTGlM7tpvUxM;P@w>Y`)zLSnD z%W_;BojEX$0=OfOq_TucaJ0d~mkFXdon%nZ9HS$VEQN03b&~^J$28^*nN0 z0sJ4RcT^QM)lGF-?L8;ls+^fFr)keEV&2=$HULGCsChhHOz4LpBR5DzgdZ`>RG`WE z0-Ugz)hf!>&GvF?Evr;uQuQjE>+;$go@&|`%jAkqLZnbvTUP>SHF6F1{lgD4;QSL>A%d6y literal 1252 zcmb`{%L;-(6b4`)p(kn8D(E7b8dOLZgqV$&Lr&<-Fc-p}KCNgm+UAr?7a#xOoPS1+ z*#XIop~CUrAzv~A51 z)_Jw_-FR(NK7#6w`E?|FxY%Hb0OKf*CBH(h6M9c&VVlT)4UCJ~LYwZ`i2k)&)Gkecxhhw~jWLkMkf z0(Z-dg^WFcDCz{0t%W0RQ&)nn^`c^pt~p$lGnDn0v#MOf>|7Vt6TWW>>H`l^s|i-P zDeV7Fd75XuG==FxCmicU-rWvP(v~YZP+Q0H9{UTqb$S?n8%y#de`+NYV7vSj)>_75 Y`gJ3m=t_PYRzfHl8b$vpPa4hr0{b`y3IG5A literal 856 zcmb`^y$ZrG6o%pM-iwoy;7>@c6;ul9B4V54W>1VMs%i?aM8hX0aaNQL2)m&a&yC6WWKLJc==oZ zNp28ijHVrPqdbDMPPz%5_=^_DJIdNJJEYSg+diL@YHP%$_uV-s)gh%Y9}v&H4rV;r Z7LgS#s{3B6Gz^2iZk#Mz;mRiVdIGmK6R7|I diff --git a/Source/php4DelphiR2010.stat b/Source/php4DelphiR2010.stat index 02de922..92d1072 100644 --- a/Source/php4DelphiR2010.stat +++ b/Source/php4DelphiR2010.stat @@ -1,9 +1,9 @@ [Stats] -EditorSecs=4128 +EditorSecs=4262 DesignerSecs=1 InspectorSecs=3 -CompileSecs=112868 -OtherSecs=370 +CompileSecs=138371 +OtherSecs=477 StartTime=29.07.4016 22:02:01 RealKeys=0 EffectiveKeys=0 diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index e55b8ae..12e8976 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -94,9 +94,6 @@ TpsvCustomPHP = class(TPHPComponent) FRequestType : TPHPRequestType; FOnReadResult : TPHPReadResultEvent; FContentType: zend_ustr; - {$IFDEF sCPUX64} - FCode: zend_ustr; - {$ENDIF} FVirtualStream : TStringStream; procedure SetVariables(Value : TPHPVariables); procedure SetHeaders(Value : TPHPHeaders); @@ -218,6 +215,7 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) FOnScriptError : TPHPErrorEvent; FOnLogMessage : TPHPLogMessage; FWaitForShutdown : boolean; + RegNumFunc : Cardinal; FHash : TStringList; FLibraryModule : Tzend_module_entry; FLibraryEntryTable : array of zend_function_entry; @@ -226,7 +224,6 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) function GetConstantCount: integer; function GetEngineActive : boolean; protected - MyFuncs: TStringList; TSRMLS_D : pppointer; procedure StartupPHP; virtual; procedure PrepareEngine; virtual; @@ -246,7 +243,7 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) public constructor Create(AOwner : TComponent); override; destructor Destroy; override; - procedure AddFunction(FN: zend_ustr; Func: Pointer); + procedure AddFunction(FN: zend_pchar; Func: Pointer); procedure AddModule(Module_entry: Pzend_module_entry); procedure StartupEngine; virtual; procedure ShutdownEngine; virtual; @@ -698,7 +695,6 @@ procedure php_delphi_register_variables(val : pzval; p : pointer); cdecl; begin Exit; end; - php_register_variable('PHP_SELF', '_', nil, p); php_register_variable('REMOTE_ADDR', zend_pchar(GetLocalIP()), val, p); php_register_variable('IP_ADDRESS', zend_pchar(GetLocalIP()), val, p); @@ -1032,9 +1028,6 @@ function TpsvCustomPHP.Execute : zend_ustr; {$IFDEF PHP5} ZendStream : TZendStream; {$ENDIF} - {$IFDEF sCPUX64} - z: pzval; - {$ENDIF} begin if not EngineActive then @@ -1069,7 +1062,7 @@ function TpsvCustomPHP.Execute : zend_ustr; StartupRequest; ZeroMemory(@file_handle, sizeof(zend_file_handle)); - {$IFNDEF sCPUX64} + if FUseMapping then begin {$IFDEF PHP5} @@ -1102,10 +1095,6 @@ function TpsvCustomPHP.Execute : zend_ustr; {$ENDIF} end else - {$ENDIF} - {$IFDEF CPUX64} - if not FUseMapping then - {$ENDIF} begin file_handle._type := ZEND_HANDLE_FILENAME; file_handle.filename := zend_pchar(FFileName); @@ -1115,18 +1104,6 @@ function TpsvCustomPHP.Execute : zend_ustr; try begin - //ShowMessage('php_execute_script'); - {$IFDEF CPUX64} - if FUseMapping then - begin - ShowMessage('eval'); - z := ALLOC_ZVAL; - INIT_PZVAL(z); - z^._type := IS_STRING; - zend_eval_string(zend_pchar(FCode), z, 'SAPI execution', TSRMLS_D); - end - else - {$ENDIF} PHPAPI.php_execute_script(@file_handle, TSRMLS_D); end except @@ -1184,19 +1161,12 @@ function TpsvCustomPHP.RunCode(Acode : zend_ustr) : zend_ustr; if Pos('', [ACode]); end; - {$IFDEF CPUX64} - FCode := Acode; - {$ELSE} if not CreateVirtualFile(ACode) then begin Result := ''; Exit; end; - {$ENDIF} Result := Execute; - {$IFNDEF CPUX64} - CloseVirtualFile; - {$ENDIF} finally FUseMapping := false; end; @@ -1497,7 +1467,6 @@ constructor TPHPEngine.Create(AOwner: TComponent); InitializeCriticalSection(FLock); PHPEngine := Self; - MyFuncs := TStringList.Create; end; destructor TPHPEngine.Destroy; @@ -1506,7 +1475,6 @@ destructor TPHPEngine.Destroy; FEngineActive := false; FConstants.Free; FHash.Free; - MyFuncs.Free; DeleteCriticalSection(FLock); if (PHPEngine = Self) then PHPEngine := nil; @@ -1616,7 +1584,7 @@ procedure TPHPEngine.PrepareIniEntry; if FHandleErrors then begin - ppointer(GetProcAddress(PHPLib, 'zend_error_cb'))^ := @delphi_error_cb; + HFunc(@delphi_error_cb, 'zend_error_cb'); end; {$IFNDEF PHP540} if FSafeMode then @@ -1692,14 +1660,14 @@ procedure TPHPEngine.PrepareEngine; FLibraryModule.module_startup_func := @minit; FLibraryModule.module_shutdown_func := @mshutdown; FLibraryModule.info_func := @php_info_library; - FLibraryModule.version := '8.0 ds'; FLibraryModule.request_shutdown_func := @rshutdown; FLibraryModule.request_startup_func := @rinit; FLibraryModule.module_started := 0; FLibraryModule._type := MODULE_PERSISTENT; - FLibraryModule.handle := nil; + + FLibraryModule.Handle := nil; FLibraryModule.module_number := 0; FLibraryModule.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); end; @@ -1815,60 +1783,6 @@ procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); end; end; -procedure TPHPEngine.RefreshLibrary; -var - cnt, offset : integer; - HashName : zend_ustr; -begin - SetLength(FLibraryEntryTable, FHash.Count + MyFuncs.Count + 5); - - PHP_FUNCTION(FLibraryEntryTable[0], 'delphi_date', @delphi_date); - - FLibraryEntryTable[1].fname := 'delphi_get_author'; - FLibraryEntryTable[1].handler := @delphi_get_author; - FLibraryEntryTable[1].arg_info := nil; - - FLibraryEntryTable[2].fname := 'delphi_str_date'; - FLibraryEntryTable[2].handler := @delphi_str_date; - FLibraryEntryTable[2].arg_info := nil; - - PHP_FUNCTION(FLibraryEntryTable[3], 'InputBox', @delphi_input_box); - - for cnt := 0 to FHash.Count - 1 do - begin - HashName := FHash[cnt]; - - {$IFNDEF COMPILER_VC9} - FLibraryEntryTable[cnt+4].fname := strdup(zend_pchar(HashName)); - {$ELSE} - FLibraryEntryTable[cnt+4].fname := DupStr(zend_pchar(HashName)); - {$ENDIF} - - FLibraryEntryTable[cnt+4].handler := @DispatchRequest; - FLibraryEntryTable[cnt+4].arg_info := nil; - end; - - offset := FHash.Count + 4; - for cnt := 0 to MyFuncs.Count - 1 do - begin - HashName := MyFuncs[cnt]; - {$IFNDEF COMPILER_VC9} - FLibraryEntryTable[cnt+offset].fname := strdup(zend_pchar(HashName)); - {$ELSE} - FLibraryEntryTable[cnt+offset].fname := DupStr(zend_pchar(HashName)); - {$ENDIF} - - FLibraryEntryTable[cnt+offset].handler := MyFuncs.Objects[ cnt ]; - FLibraryEntryTable[cnt+offset].arg_info := nil; - end; - - - FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].fname := nil; - FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].handler := nil; - FLibraryEntryTable[FHash.Count+MyFuncs.Count+4].arg_info := nil; - - FLibraryModule.functions := @FLibraryEntryTable[0]; -end; procedure TPHPEngine.StartupEngine; var i : integer; @@ -1909,7 +1823,6 @@ procedure TPHPEngine.StartupEngine; RefreshLibrary; - php_module_startup(@delphi_sapi_module, @FLibraryModule, 1); TSRMLS_D := ts_resource_ex(0, nil); @@ -2048,10 +1961,14 @@ procedure TPHPEngine.RemoveRequest; end; end; -procedure TPHPEngine.AddFunction(FN: zend_ustr; Func: Pointer); +procedure TPHPEngine.AddFunction(FN: zend_pchar; Func: Pointer); begin - if MyFuncs.IndexOf(FN) = -1 then - MyFuncs.AddObject(FN, TObject(Func)); + inc(RegNumFunc); + SetLength(FLibraryEntryTable, RegNumFunc + 1); + FLibraryEntryTable[RegNumFunc - 1].fname := FN; + //FLibraryEntryTable[RegNumFunc - 1].num_args := 0; + FLibraryEntryTable[RegNumFunc - 1].arg_info := nil; + FLibraryEntryTable[RegNumFunc - 1].handler := Func; end; procedure TPHPEngine.AddModule(Module_entry: Pzend_module_entry); @@ -2060,6 +1977,19 @@ procedure TPHPEngine.AddModule(Module_entry: Pzend_module_entry); FAddMods[High(FAddMods)] := Module_entry; end; +procedure TPHPEngine.RefreshLibrary; +var i: integer; +begin + Self.AddFunction('delphi_date', @delphi_date); + Self.AddFunction('delphi_get_author', @delphi_get_author); + Self.AddFunction('delphi_str_date', @delphi_str_date); + Self.AddFunction('InputBox', @delphi_input_box); + + for i := 0 to FHash.Count - 1 do + Self.AddFunction(zend_pchar(zend_ustr(FHash[i])), @DispatchRequest); + FLibraryModule.functions := @FLibraryEntryTable[0]; +end; + procedure TPHPEngine.AddRequest; var x: Pzend_module_entry; diff --git a/Source/phpAbout.dfm b/Source/phpAbout.dfm index b2826e6..88d0aa1 100644 --- a/Source/phpAbout.dfm +++ b/Source/phpAbout.dfm @@ -1205,7 +1205,7 @@ object dlgAbout: TdlgAbout Alignment = taCenter Anchors = [] AutoSize = False - Caption = 'Copyright (c) 2002-2019 Serhiy Perevoznyk, Andrew Zenin'#13#10'All Rights Reserved' + Caption = 'Copyright (c) 2002-2020 Serhiy Perevoznyk, Lew Zienin, Nikita Ganzikov'#13#10'All Rights Reserved' end object labVersion: TLabel Left = 4 diff --git a/readme.txt b/readme.txt index ead92f3..5281792 100644 --- a/readme.txt +++ b/readme.txt @@ -437,7 +437,11 @@ serge_perevoznyk@hotmail.com http://users.telenet.be/ws36637 http://delphi32.blogspot.com -Andrew Zenin +Lew Zienin +Poland +levzenin@pm.me + +Nikita Ganzikov Ukraine -kashaket@protonmail.com +pig-l@mail.ru From 362b72b79ee2aa091a983381cef52e6858f547e0 Mon Sep 17 00:00:00 2001 From: Lev Zenin Date: Thu, 20 Feb 2020 08:24:57 +0200 Subject: [PATCH 26/35] Updated structs --- Source/Demos/psvPHP/console/phpcon.dpr | 2 +- Source/Demos/psvPHP/console/phpcon.dproj | 2 +- Source/ZendTypes.pas | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index 1ba3210..0886d78 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -55,7 +55,7 @@ begin php := TpsvPHP.Create(nil); if ParamCount = 1 then begin - php.FileName := ParamStr(1); + php.FileName := zend_ustr(ParamStr(1)); write(php.Execute); end else diff --git a/Source/Demos/psvPHP/console/phpcon.dproj b/Source/Demos/psvPHP/console/phpcon.dproj index f329cbf..caf51d6 100644 --- a/Source/Demos/psvPHP/console/phpcon.dproj +++ b/Source/Demos/psvPHP/console/phpcon.dproj @@ -8,7 +8,7 @@ Console None 18.2 - Win64 + Win32 true diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 252446a..dcc97c5 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -1233,9 +1233,13 @@ Tzend_module_entry = record {$IFDEF PHP5} {$IFDEF PHP520} globals_size : size_t; + {$IFDEF PHP540} + globals_ptr : pointer; + {$ELSE} globals_id_ptr : pointer; - globals_ctor : pointer; - globals_dtor : pointer; + {$ENDIF} + globals_ctor : procedure (global:pointer);cdecl; + globals_dtor : procedure (global:pointer);cdecl; {$ENDIF} {$ENDIF} @@ -1250,7 +1254,7 @@ Tzend_module_entry = record global_id: integer; {$ENDIF} - module_started: integer; + module_started: longint; _type: byte; handle: pointer; module_number: longint; From 6374a68de69f0e71922ad40828041023a6ccac34 Mon Sep 17 00:00:00 2001 From: lion Date: Sat, 18 Jul 2020 06:02:52 +0300 Subject: [PATCH 27/35] Update readme.txt --- readme.txt | 222 ++++------------------------------------------------- 1 file changed, 13 insertions(+), 209 deletions(-) diff --git a/readme.txt b/readme.txt index 5281792..f24d7d9 100644 --- a/readme.txt +++ b/readme.txt @@ -1,9 +1,9 @@ PHP4Delphi library PHP - Delphi interface and PHP extensions development framework -{ $Id: readme.txt,v 7.4 2/2019 delphi32 Exp $ } +{ $Id: readme.txt,v 7.4 07/2020 delphi32 Exp $ } -PHP4Delphi is a Delphi interface to PHP for Delphi 5, 6, 7, Delphi 2005 - Delphi Berlin +PHP4Delphi is a Delphi interface to PHP for Delphi {2007, ..., Berlin} PHP4Delphi consists of 3 big subprojects: @@ -29,22 +29,18 @@ More detail information available in php4Delphi manual php4Delphi.pdf This is a source-only release of php4Delphi. It includes -design-time and run-time packages for Delphi 5 through Delphi Berlin +design-time and run-time packages for Delphi 2007 through Delphi Berlin History: -7.4.1 Mar 2019 - -* Added unicode support - -7.4 Feb 2019 +7.4 Mar 2019 * Compatible with PHP 5.5.0 * Compatible with PHP 5.6.0 -* Compatible with PHP 5.6 +* Compatible with PHP 5.6.x * Compatible with Delphi 2011, XE8, Seattle, Berlin -* Added Partial Unicode Support +* Added unicode support 7.3 Jan 2019 @@ -196,215 +192,23 @@ c:\winnt or c:\winnt40 for NT/2000/XP servers How to install php4Delphi library: -1. Delphi 5.x: - -Uninstall previous installed version of php4Delphi Library from Delphi 5 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} -c) Save PHP.INC file - -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR5.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR5.dpk. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD5.dpk. -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - - -2. Delphi 6.x: - -Uninstall previous installed version of php4Delphi Library from Delphi 6 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} -c) Save PHP.INC file - -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR6.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR6. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD6.dpk. -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - -3. Delphi 7.x: - -Uninstall previous installed version of php4Delphi Library from Delphi 7 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} -c) Save PHP.INC file - -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR7.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR7.dpk. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD7.dpk -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - - -4. Delphi 2005: - -Uninstall previous installed version of php4Delphi Library from Delphi 2005 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} -c) Save PHP.INC file - -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR2005.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR2005.dpk. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD2005.dpk -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - - - -5. Delphi 2006: - -Uninstall previous installed version of php4Delphi Library from Delphi 2006 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} -c) Save PHP.INC file - -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR2006.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR2006.dpk. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD2006.dpk -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - - -6. Delphi 2007: +Delphi 2007 & up: Uninstall previous installed version of php4Delphi Library from Delphi 2007 IDE. Remove previously compiled php4Delphi packages from your hard disk. -Select PHP version you are going to use. php4Delphi supports PHP 4.x and PHP 5.x, +Select PHP version you are going to use. php4Delphi supports PHP 5.x, but not at the same time. You have to compile php4Delphi for selected target version of PHP. Open PHP.INC file. If you are using PHP5: -a) Comment (remove) PHP4 directive {$DEFINE PHP4} -b) Uncomment (remove dot) directive {$DEFINE PHP5} +a) Uncomment (remove dot) from definition of suitable php, VC, Visual Library and architecture version +b) Uncomment (remove dot) from definition of prefered features in the feature block of the PHP.INC file c) Save PHP.INC file -If you are using PHP4: -a) Comment (remove) PHP5 directive {$DEFINE PHP5} -b) Uncomment (remove dot) directive {$DEFINE PHP4} -c) If you are using PHP version 4.2.x...4.3.0 add {$DEFINE PHP430} and remove {$DEFINE PHP433} - If you are using PHP version 4.3.3...4.3.x add {$DEFINE PHP433} and remove {$DEFINE PHP430} -d) Save PHP.INC file - Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -package php4DelphiR2007.dpk. In "Package..." window click "Compile" button to -compile packages php4DelphiR2007.dpk. +choose suitable Runtime package php4DelphiR(Your Delphi Version).dpk; In "Package..." window click "Compile" button to +compile packages. Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS "PATH" environment variable; for example, in the Windows\System directory). @@ -412,7 +216,7 @@ for example, in the Windows\System directory). After compiling php4Delphi run-time package you must install design-time package into the IDE. -Use "File\Open..." menu item to open design-time package php4DelphiD2007.dpk +Use "File\Open..." menu item to open design-time package php4DelphiD(Your Delphi Version).dpk In "Package..." window click "Compile" button to compile the package and then click "Install" button to register php4Delphi Library components on the component palette. From d5a2f2ad760d7c908ab408bf6350963ed6498d4f Mon Sep 17 00:00:00 2001 From: levzenin Date: Sat, 18 Jul 2020 07:29:07 +0300 Subject: [PATCH 28/35] php.inc: /rework/ user-friendly --- Source/PHP.INC | 169 +- Source/PHPAPI.pas | 4 +- Source/ZENDAPI.pas | 8 +- Source/hzend_types.pas | 2 +- Source/php4delphi.pas | 3649 ++++++++++++++++++++-------------------- 5 files changed, 1922 insertions(+), 1910 deletions(-) diff --git a/Source/PHP.INC b/Source/PHP.INC index 5ee313f..09db880 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -5,101 +5,104 @@ { Author: } { Serhiy Perevoznyk } { serge_perevoznyk@hotmail.com } -{ http://users.chello.be/ws36637 } -{ http://delphi32.blogspot.com } +{ https://users.chello.be/ws36637 } +{ https://delphi32.blogspot.com } {*******************************************************} -{ $Id: PHP.INC,v 7.4 10/2009 delphi32 Exp $ } +{ $Id: PHP.INC,v 7.4 07/2020 delphi32 Exp $ } {IMPORTANT: -If you are using PHP version 5.0 please add $DEFINE PHP5 -If you are using PHP version 5.0.4 please add $DEFINE PHP504 -If you are using PHP version 5.1.0 or higher please add $DEFINE PHP510 -If you are using PHP version 5.1.1 or higher please add $DEFINE PHP511 -If you are using PHP version 5.1.2 or higher please add $DEFINE PHP512 -If you are using PHP version 5.2.0 or higher please add $DEFINE PHP520 -IF you are using PHP version 5.3.0 or higher please add $DEFINE PHP530 -IF you are using PHP version 5.4.0 or higher please add $DEFINE PHP540 -IF you are using PHP version 5.5.0 or higher please add $DEFINE PHP550 -IF you are using PHP version 5.6.0 or higher please add $DEFINE PHP560 -IF you are using PHP cersion 7.0.0 or higher please add $DEFINE PHP700 -If you are using PHP compiled via: -id, define compiler_id -VC9 COMPILER_VC9 -VC10 COMPILER_VC10 -VC11 COMPILER_VC11 -VC12 COMPILER_VC12 -VC13 COMPILER_VC13 -VC14 COMPILER_VC14 -Sorry for such complicated configuration, but PHP team does not keep -backward compatibility between PHP versions. +Define suitable PHP version, the table is represented below: +| Version | Directive | + 5.0 $DEFINE PHP5 + 5.0.4 $DEFINE PHP504 + 5.1.0 $DEFINE PHP510 + 5.1.1 $DEFINE PHP511 + 5.1.2 $DEFINE PHP512 + 5.2 $DEFINE PHP520 + 5.3 $DEFINE PHP530 + 5.4 $DEFINE PHP540 + 5.5 $DEFINE PHP550 + 5.6 $DEFINE PHP560 + 7.0 $DEFINE PHP7 + 7.1 $DEFINE PHP710 + +Define suitable visual library +| Library | Directive | + VCL $DEFINE VCL + FMX $DEFINE FMX } -{PHP5 must be defined if you are using PHP5} -{$DEFINE PHP5} - -{For PHP5 you have to define the subversion of PHP} -{$DEFINE PHP504} -{$DEFINE PHP510} -{$DEFINE PHP511} -{$DEFINE PHP512} -{$DEFINE PHP520} -{$DEFINE PHP530} -{$DEFINE PHP540} -{$DEFINE PHP550} +//Version {$DEFINE PHP560} +{$DEFINE VCL} + +//Features +{$DEFINE PHP_UNICODE} + //PHP unicode support *Enables WideString and UnicodeString +{$DEFINE REGISTER_COLOURS} + //constants for Delphi colours +{.$DEFINE QUIET_LOAD} + //Do not show errors while loading php library +{.$DEFINE PHP4DELPHI_AUTOLOAD} + //Load php library at initialization +{.$DEFINE PHP4DELPHI_AUTOUNLOAD} + // Unload php library at finalization + +//Compiler switches +{.$DEFINE php_side_handler} + //enable ability to define own error handler from php side ~NON_TC +{.$DEFINE COMPILER_php7pv} + // use macroses from PHP sources patch + // https://github.com/resistancelion/no-name-engine/tree/master/php-src +{.$DEFINE PHP_DEBUG} + //use debug libraries (php7debug, f.e) + + + + + + + + + + + + + + +//E N D +{$WARN UNIT_DEPRECATED OFF} +{$IFDEF PHP_UNICODE} {$DEFINE UNICODE} {$ENDIF} + +{$IFDEF PHP710} {$DEFINE PHP700} {$ENDIF} +{$IFDEF PHP700} {$DEFINE PHP7} {$ENDIF} + +{$IFDEF PHP7} {$DEFINE PHP560} {$ENDIF} +{$IFDEF PHP560} {$DEFINE PHP550} {$ENDIF} +{$IFDEF PHP550} {$DEFINE PHP540} {$ENDIF} +{$IFDEF PHP540} {$DEFINE PHP530} {$ENDIF} {$IFDEF PHP530} + {$DEFINE PHP520} {$DEFINE ZEND_WIN32} {$DEFINE PHP_COMPILER_ID} {$ENDIF} -{$DEFINE soulengine_build} -{.$DEFINE PHP7} -{.$DEFINE CUTTED_PHP7dll} - {$IFDEF PHP7} - {$DEFINE COMPILER_VC14} - {$DEFINE PHP560} - {$DEFINE PHP700} - {$ENDIF} -{$IFDEF PHP560} - {$DEFINE PHP530} - {$DEFINE PHP540} - {$DEFINE PHP550} - {$DEFINE ZEND_WIN32} - {$DEFINE PHP_COMPILER_ID} -{$ENDIF} -//Warning! You must select one of the compilers -//Look at the version of PHP you have installed -//I DO recommend to use php-5.6.40-Win32-VC11-x86, specially if you are using -//php4delphi component with php5ts.dll. If you are building PHP extensions, -//you have to define the right compiler, otherwise you would have incompatibility -//problems - +{$IFDEF PHP520} {$DEFINE PHP512} {$ENDIF} +{$IFDEF PHP512} {$DEFINE PHP511} {$ENDIF} +{$IFDEF PHP511} {$DEFINE PHP510} {$ENDIF} +{$IFDEF PHP510} {$DEFINE PHP504} {$ENDIF} +{$IFDEF PHP504} {$DEFINE PHP5} {$ENDIF} {$IFDEF PHP_COMPILER_ID} {$DEFINE COMPILER_VC9} {$IFNDEF PHP7} {$IFDEF PHP550} {$DEFINE COMPILER_VC11} {$ENDIF} - {$ENDIF} + {$ELSE} + {$DEFINE COMPILER_VC14} + {$ENDIF} {$ENDIF} -{$WARN UNIT_DEPRECATED OFF} - -{.$DEFINE QUIET_LOAD} //Do not show error while loading php4ts.dll or php5ts.dll (depends from php version) - -{.$DEFINE PHP4DELPHI_AUTOLOAD} //Load php4ts.dll or php5ts.dll at initialization -{.$DEFINE PHP4DELPHI_AUTOUNLOAD} // Unload php4ts.dll or php5ts.dll at finalization - -{.$DEFINE PHP_DEBUG} - -{$DEFINE REGISTER_COLORS} //register php constants for colors - {$IFNDEF LINUX} - {$DEFINE ZTS} {zts support} -{$ENDIF} - -{$IF Defined(COMPILER_VC11) and Defined(PHP560) or Defined(PHP7)} - {$DEFINE PHP_UNICODE} -{$ELSEIF Defined(COMPILER_VC12) or Defined(COMPILER_VC13) or Defined(COMPILER_VC14) or Defined(COMPILER_VC15)} - {$DEFINE PHP_UNICODE} + {$DEFINE ZTS} {zend thread safety support} {$ENDIF} {$IFNDEF VER80} {Delphi 1.0} @@ -205,6 +208,14 @@ backward compatibility between PHP versions. {$WARNINGS OFF} {$ENDIF} -{$IFDEF MSWINDOWS} -{$DEFINE WINDOWS} +{$IFDEF MSWINDOWS} {$DEFINE WINDOWS} {$ENDIF} +{$IFDEF FPC} + {$IFDEF FMX} {$UNDEF FMX} {$ENDIF} + {$IFDEF VCL} {$UNDEF VCL} {$ENDIF} + {$DEFINE LCL} +{$ELSE} + {$IFDEF LCL} + {$UNDEF LCL} + {$DEFINE VCL} + {$ENDIF} {$ENDIF} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 186c619..23b8426 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -177,7 +177,7 @@ function GetSAPIGlobals(TSRMLS_DC : pointer) : Psapi_globals_struct; overload; -{$IFNDEF CUTTED_PHP7dll} +{$IFNDEF COMPILER_php7pv} php_log_err: procedure (err_msg : zend_pchar; TSRMLS_DC : pointer); cdecl; {$ENDIF} php_html_puts: procedure (str : zend_pchar; str_len : integer; TSRMLS_DC : pointer); cdecl; @@ -587,7 +587,7 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; LFunc(@php_body_write, 'php_body_write' ); LFunc(@php_header_write, 'php_header_write'); {$ENDIF} - {$IFNDEF CUTTED_PHP7dll} + {$IFNDEF COMPILER_php7pv} LFunc(@php_log_err, 'php_log_err'); {$ENDIF} LFunc(@php_html_puts, 'php_html_puts'); diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 6415459..192f6ff 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -592,7 +592,7 @@ procedure dispose_pzval_array(Params: pzval_array); add_property_stringl_ex : function(arg: pzval; key: zend_pchar; key_len: uint; str: zend_pchar; len: uint; duplicate: integer; TSRMLS_DC: Pointer): integer; cdecl; add_property_zval_ex : function(arg: pzval; key: zend_pchar; key_len: uint; value: pzval; TSRMLS_DC: Pointer): integer; cdecl; - {$IFDEF CUTTED_PHP7dll} + {$IFDEF COMPILER_php7pv} call_user_function : procedure(func:pzval; argv:pzval; argc:integer);cdecl; {$ELSE} call_user_function : function(function_table: PHashTable; object_pp: pzval; @@ -2399,7 +2399,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$IFDEF PHP7} LFunc(@_zend_hash_add_or_update, '_zend_hash_add_or_update@@16'); LFunc(@_zend_hash_add, '_zend_hash_add@@12'); - {$IFDEF CUTTED_PHP7dll} + {$IFDEF COMPILER_php7pv} LFunc(@zend_hash_index_findZval,'zend_hash_index_findZval'); LFunc(@zend_symtable_findTest,'zend_symtable_findTest'); LFunc(@zend_hash_index_existsZval,'zend_hash_index_existsZval'); @@ -2809,8 +2809,8 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; // -- add_property_zval_ex LFunc(@add_property_zval_ex, 'add_property_zval_ex'); - LFunc(@call_user_function, {$IFDEF CUTTED_PHP7dll}'__call_function'{$ELSE}'call_user_function'{$ENDIF}); - {$IFNDEF CUTTED_PHP7dll} + LFunc(@call_user_function, {$IFDEF COMPILER_php7pv}'__call_function'{$ELSE}'call_user_function'{$ENDIF}); + {$IFNDEF COMPILER_php7pv} LFunc(@call_user_function_ex, 'call_user_function_ex'); {$ENDIF} // -- add_assoc_long_ex diff --git a/Source/hzend_types.pas b/Source/hzend_types.pas index c2e76e9..325f3a6 100644 --- a/Source/hzend_types.pas +++ b/Source/hzend_types.pas @@ -2,7 +2,7 @@ interface -uses Winapi.Windows; +uses {$IFDEF FPC}Winapi.Windows{$ELSE}Windows{$ENDIF}; var _TestCreate:Pointer; diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index 12e8976..d1fa8cf 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -1,386 +1,386 @@ -{*******************************************************} -{ PHP4Delphi } -{ PHP - Delphi interface } -{ } -{ Developers: } -{ Serhiy Perevoznyk } -{ serge_perevoznyk@hotmail.com } -{ } -{ Toby Allen (Documentation) } -{ tobyphp@toflidium.com } -{ } -{ http://users.telenet.be/ws36637 } -{ http://delphi32.blogspot.com } -{*******************************************************} -{$I PHP.INC} -{$ifdef fpc} - {$mode delphi} -{$endif} -{ $Id: php4delphi.pas,v 7.4 02/2019 delphi32 Exp $ } - -// Important: -// Please check PHP version you are using and change php.inc file -// See php.inc for more details - -{ -You can download the latest version of PHP from -http://www.php.net/downloads.php -You have to download and install PHP separately. -It is not included in the package. - -For more information on the PHP Group and the PHP project, -please see . -} -unit php4delphi; - -interface - -uses - Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, - PHPCommon, WinApi.WinSock, - ZendTypes, PHPTypes, PHPAPI, ZENDAPI, - DelphiFunctions, phpFunctions, strUtils, varUtils, - {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} - {$IFDEF soulengine_build} VCL.Dialogs, {$ENDIF} - System.UITypes; - -type - - IPHPEngine = interface (IUnknown) - ['{484AE2CA-755A-437C-9B60-E3735973D0A9}'] - procedure HandleRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); - function GetEngineActive : boolean; - end; - TPHPMemoryStream = class(TMemoryStream) - public - constructor Create; - procedure SetInitialSize(ASize : integer); - end; - {-- PHP Events --} - TPHPLogMessage = procedure (Sender : TObject; AText : zend_ustr) of object; - TPHPErrorEvent = procedure (Sender: TObject; AText: zend_ustr; - AType: integer; AFileName: zend_ustr; ALineNo: integer) of object; - TPHPReadPostEvent = procedure(Sender : TObject; Stream : TStream) of object; - TPHPReadResultEvent = procedure(Sender : TObject; Stream : TStream) of object; - - { TpsvCustomPHP } - TpsvCustomPHP = class(TPHPComponent) - private - FHeaders : TPHPHeaders; - FMaxExecutionTime : integer; - FExecuteMethod : TPHPExecuteMethod; - FSessionActive : boolean; - FOnRequestStartup : TNotifyEvent; - FOnRequestShutdown : TNotifyEvent; - FAfterExecute : TNotifyEvent; - FBeforeExecute : TNotifyEvent; - FTerminated : boolean; - FVariables : TPHPVariables; - FBuffer : TPHPMemoryStream; - FOnLogMessage : TPHPLogMessage; - FOnScriptError : TPHPErrorEvent; - FFileName : zend_ustr; - {$IFDEF PHP4} - FWriterHandle : THandle; - FVirtualReadHandle : THandle; - FVirtualWriteHandle : THandle; - FVirtualCode : zend_ustr; - {$ENDIF} - FUseDelimiters : boolean; - FUseMapping : boolean; - FPostStream : TMemoryStream; - FOnReadPost : TPHPReadPostEvent; - FRequestType : TPHPRequestType; - FOnReadResult : TPHPReadResultEvent; - FContentType: zend_ustr; - FVirtualStream : TStringStream; - procedure SetVariables(Value : TPHPVariables); - procedure SetHeaders(Value : TPHPHeaders); - function GetVariableCount: integer; - protected - - procedure ClearBuffer; - procedure ClearHeaders; - procedure PrepareResult; virtual; - procedure PrepareVariables; virtual; - function RunTime : boolean; - function GetThreadSafeResourceManager : pointer; - function CreateVirtualFile(A_code: zend_ustr) : boolean; - procedure CloseVirtualFile; - {$IFDEF PHP4} - property VirtualCode : string read FVirtualCode; - {$ENDIF} - function GetEngine : IPHPEngine; - public - TSRMLS_D : pointer; - Thread: TThread; - {fixed} - procedure StartupRequest; virtual; - procedure ShutdownRequest; virtual; - {/fixed} - - constructor Create(AOwner : TComponent); override; - destructor Destroy; override; - function EngineActive : boolean; - function Execute : zend_ustr; overload; - function Execute(AFileName : zend_ustr) : zend_ustr; overload; - function RunCode(ACode : zend_ustr) : zend_ustr; overload; - function RunCode(ACode : TStrings) : string; overload; - function VariableByName(AName : zend_ustr) : TPHPVariable; - property PostStream : TMemoryStream read FPostStream; - property ExecuteMethod : TPHPExecuteMethod read FExecuteMethod write FExecuteMethod default emServer; - property FileName : zend_ustr read FFileName write FFileName; - property Variables : TPHPVariables read FVariables write SetVariables; - property VariableCount : integer read GetVariableCount; - property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; - property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; - property OnRequestStartup : TNotifyEvent read FOnRequestStartup write FOnRequestStartup; - property OnRequestShutdown : TNotifyEvent read FOnRequestShutdown write FOnRequestShutdown; - property BeforeExecute : TNotifyEvent read FBeforeExecute write FBeforeExecute; - property AfterExecute : TNotifyEvent read FAfterExecute write FAfterExecute; - property ThreadSafeResourceManager : pointer read GetThreadSafeResourceManager; - property SessionActive : boolean read FSessionActive; - property UseDelimiters : boolean read FUseDelimiters write FUseDelimiters default true; - property MaxExecutionTime : integer read FMaxExecutionTime write FMaxExecutionTime default 0; - property Headers : TPHPHeaders read FHeaders write SetHeaders; - property OnReadPost : TPHPReadPostEvent read FOnReadPost write FOnReadPost; - property RequestType : TPHPRequestType read FRequestType write FRequestType default prtGet; - property ResultBuffer : TPHPMemoryStream read FBuffer; - property OnReadResult : TPHPReadResultEvent read FOnReadResult write FOnReadResult; - property ContentType : zend_ustr read FContentType write FContentType; - end; - - TpsvPHP = class(TpsvCustomPHP) - published - property About; - property FileName; - property Variables; - property OnLogMessage; - property OnScriptError; - property OnRequestStartup; - property OnRequestShutdown; - property OnReadPost; - property BeforeExecute; - property AfterExecute; - property UseDelimiters; - property MaxExecutionTime; - property RequestType; - property OnReadResult; - property ContentType; - end; - - TCustomPHPLibrary = class(TPHPComponent) - private - FExecutor : TpsvCustomPHP; - FLibraryName : zend_ustr; - FFunctions : TPHPFunctions; - FLocked: boolean; - procedure SetFunctions(const Value : TPHPFunctions); - procedure SetExecutor(AValue : TpsvCustomPHP); - procedure SetLibraryName(AValue : zend_ustr); - protected - procedure RegisterLibrary; virtual; - procedure UnregisterLibrary; virtual; - public - constructor Create(AOwner : TComponent); override; - destructor Destroy; override; - procedure Refresh; virtual; - property Executor : TpsvCustomPHP read FExecutor write SetExecutor; - property LibraryName : zend_ustr read FLibraryName write SetLibraryName; - property Functions : TPHPFunctions read FFunctions write SetFunctions; - property Locked : boolean read FLocked write FLocked; - end; - { TPHPEngine } - TPHPEngineInitEvent = procedure(Sender:TObject;TSRMLS_DC:Pointer) of object; - TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) - private - FINIPath : zend_ustr; - FOnEngineStartup : TNotifyEvent; - FAddMods : TArray; - FOnEngineShutdown : TNotifyEvent; - FEngineActive : boolean; - FHandleErrors : boolean; - {$IFNDEF PHP540} - FSafeMode : boolean; - FSafeModeGid : boolean; - {$ENDIF} - FRegisterGlobals : boolean; - FHTMLErrors : boolean; - FMaxInputTime : integer; - FConstants : TphpConstants; - FDLLFolder : zend_ustr; - FReportDLLError : boolean; - FLock: TRTLCriticalSection; - FOnScriptError : TPHPErrorEvent; - FOnLogMessage : TPHPLogMessage; - FWaitForShutdown : boolean; - RegNumFunc : Cardinal; - FHash : TStringList; - FLibraryModule : Tzend_module_entry; - FLibraryEntryTable : array of zend_function_entry; - FRequestCount : integer; - procedure SetConstants(Value : TPHPConstants); - function GetConstantCount: integer; - function GetEngineActive : boolean; - protected - TSRMLS_D : pppointer; - procedure StartupPHP; virtual; - procedure PrepareEngine; virtual; - procedure PrepareIniEntry; virtual; - procedure RegisterConstants; virtual; - procedure RegisterInternalConstants(TSRMLS_DC : pointer); virtual; - procedure HandleRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); virtual; - property RequestCount : integer read FRequestCount; - procedure HandleError (Sender : TObject; AText : string; AType : Integer; AFileName : string; ALineNo : integer); - procedure HandleLogMessage(Sender : TObject; AText : string); - procedure RegisterLibrary(ALib : TCustomPHPLibrary); - procedure RefreshLibrary; - procedure UnlockLibraries; - procedure RemoveRequest; - procedure AddRequest; - public - constructor Create(AOwner : TComponent); override; - destructor Destroy; override; - procedure AddFunction(FN: zend_pchar; Func: Pointer); - procedure AddModule(Module_entry: Pzend_module_entry); - procedure StartupEngine; virtual; - procedure ShutdownEngine; virtual; - procedure LockEngine; virtual; - procedure UnlockEngine; virtual; - procedure PrepareForShutdown; virtual; - property EngineActive : boolean read GetEngineActive; - property ConstantCount : integer read GetConstantCount; - property WaitForShutdown : boolean read FWaitForShutdown; - procedure ShutdownAndWaitFor; virtual; - property LibraryEntry : Tzend_module_entry read FLibraryModule; - published - property HandleErrors : boolean read FHandleErrors write FHandleErrors default true; - property OnEngineStartup : TNotifyEvent read FOnEngineStartup write FOnEngineStartup; - property OnEngineShutdown : TNotifyEvent read FOnEngineShutdown write FOnEngineShutdown; - property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; - property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; - property IniPath : zend_ustr read FIniPath write FIniPath; - {$IFNDEF PHP540} - property SafeMode : boolean read FSafeMode write FSafeMode default false; - property SafeModeGid : boolean read FSafeModeGid write FSafeModeGid default false; - {$ENDIF} - property RegisterGlobals : boolean read FRegisterGlobals write FRegisterGlobals default true; - property HTMLErrors : boolean read FHTMLErrors write FHTMLErrors default false; - property MaxInputTime : integer read FMaxInputTime write FMaxInputTime default 0; - property Constants : TPHPConstants read FConstants write SetConstants; - property DLLFolder : zend_ustr read FDLLFolder write FDLLFolder; - property ReportDLLError : boolean read FReportDLLError write FReportDLLError; - end; - - TPHPLibrarian = class - private - FLibraries : TList; - public - constructor Create; virtual; - destructor Destroy; override; - procedure AddLibrary(ALibrary : TCustomPHPLibrary); - procedure RemoveLibrary(ALibrary : TCustomPHPLibrary); - function Count : integer; - function GetLibrary(Index : integer) : TCustomPHPLibrary; - property Libraries : TList read FLibraries write FLibraries; - end; -{$IFDEF REGISTER_COLORS} -const - Colors: array[0..41] of TIdentMapEntry = ( - (Value: clBlack; Name: 'clBlack'), - (Value: clMaroon; Name: 'clMaroon'), - (Value: clGreen; Name: 'clGreen'), - (Value: clOlive; Name: 'clOlive'), - (Value: clNavy; Name: 'clNavy'), - (Value: clPurple; Name: 'clPurple'), - (Value: clTeal; Name: 'clTeal'), - (Value: clGray; Name: 'clGray'), - (Value: clSilver; Name: 'clSilver'), - (Value: clRed; Name: 'clRed'), - (Value: clLime; Name: 'clLime'), - (Value: clYellow; Name: 'clYellow'), - (Value: clBlue; Name: 'clBlue'), - (Value: clFuchsia; Name: 'clFuchsia'), - (Value: clAqua; Name: 'clAqua'), - (Value: clWhite; Name: 'clWhite'), - (Value: clScrollBar; Name: 'clScrollBar'), - (Value: clBackground; Name: 'clBackground'), - (Value: clActiveCaption; Name: 'clActiveCaption'), - (Value: clInactiveCaption; Name: 'clInactiveCaption'), - (Value: clMenu; Name: 'clMenu'), - (Value: clWindow; Name: 'clWindow'), - (Value: clWindowFrame; Name: 'clWindowFrame'), - (Value: clMenuText; Name: 'clMenuText'), - (Value: clWindowText; Name: 'clWindowText'), - (Value: clCaptionText; Name: 'clCaptionText'), - (Value: clActiveBorder; Name: 'clActiveBorder'), - (Value: clInactiveBorder; Name: 'clInactiveBorder'), - (Value: clAppWorkSpace; Name: 'clAppWorkSpace'), - (Value: clHighlight; Name: 'clHighlight'), - (Value: clHighlightText; Name: 'clHighlightText'), - (Value: clBtnFace; Name: 'clBtnFace'), - (Value: clBtnShadow; Name: 'clBtnShadow'), - (Value: clGrayText; Name: 'clGrayText'), - (Value: clBtnText; Name: 'clBtnText'), - (Value: clInactiveCaptionText; Name: 'clInactiveCaptionText'), - (Value: clBtnHighlight; Name: 'clBtnHighlight'), - (Value: cl3DDkShadow; Name: 'cl3DDkShadow'), - (Value: cl3DLight; Name: 'cl3DLight'), - (Value: clInfoText; Name: 'clInfoText'), - (Value: clInfoBk; Name: 'clInfoBk'), - (Value: clNone; Name: 'clNone')); -{$ENDIF} -var - Librarian : TPHPLibrarian = nil; - delphi_sapi_module : sapi_module_struct; - PHPEngine : TPHPEngine = nil; - {$IFDEF soulengine_build} - log_handler_php: string; - fatal_handler_php: string; - phpmd: TpsvPHP; - {$ENDIF} -implementation - -function AddSlashes(const S: zend_ustr): zend_ustr; -begin - Result := StringReplace(S, chr(8), '8', [rfReplaceAll]); - Result := StringReplace(S, '\', '\\', [rfReplaceAll]); - Result := StringReplace(Result, '''', '\''', [rfReplaceAll]); - Result := StringReplace(Result, '. +} +unit php4delphi; + +interface + +uses + Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, + PHPCommon, WinApi.WinSock, + ZendTypes, PHPTypes, PHPAPI, ZENDAPI, + DelphiFunctions, phpFunctions, strUtils, varUtils, + {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} + {$IFDEF php_side_handler} {$IFDEF FMX}FMX.Dialogs{$ELSE}VCL.Dialogs{$ENDIF}, {$ENDIF} + System.UITypes; + +type + + IPHPEngine = interface (IUnknown) + ['{484AE2CA-755A-437C-9B60-E3735973D0A9}'] + procedure HandleRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; + return_value_used : integer; TSRMLS_DC : pointer); + function GetEngineActive : boolean; + end; + TPHPMemoryStream = class(TMemoryStream) + public + constructor Create; + procedure SetInitialSize(ASize : integer); + end; + {-- PHP Events --} + TPHPLogMessage = procedure (Sender : TObject; AText : zend_ustr) of object; + TPHPErrorEvent = procedure (Sender: TObject; AText: zend_ustr; + AType: integer; AFileName: zend_ustr; ALineNo: integer) of object; + TPHPReadPostEvent = procedure(Sender : TObject; Stream : TStream) of object; + TPHPReadResultEvent = procedure(Sender : TObject; Stream : TStream) of object; + + { TpsvCustomPHP } + TpsvCustomPHP = class(TPHPComponent) + private + FHeaders : TPHPHeaders; + FMaxExecutionTime : integer; + FExecuteMethod : TPHPExecuteMethod; + FSessionActive : boolean; + FOnRequestStartup : TNotifyEvent; + FOnRequestShutdown : TNotifyEvent; + FAfterExecute : TNotifyEvent; + FBeforeExecute : TNotifyEvent; + FTerminated : boolean; + FVariables : TPHPVariables; + FBuffer : TPHPMemoryStream; + FOnLogMessage : TPHPLogMessage; + FOnScriptError : TPHPErrorEvent; + FFileName : zend_ustr; + {$IFDEF PHP4} + FWriterHandle : THandle; + FVirtualReadHandle : THandle; + FVirtualWriteHandle : THandle; + FVirtualCode : zend_ustr; + {$ENDIF} + FUseDelimiters : boolean; + FUseMapping : boolean; + FPostStream : TMemoryStream; + FOnReadPost : TPHPReadPostEvent; + FRequestType : TPHPRequestType; + FOnReadResult : TPHPReadResultEvent; + FContentType: zend_ustr; + FVirtualStream : TStringStream; + procedure SetVariables(Value : TPHPVariables); + procedure SetHeaders(Value : TPHPHeaders); + function GetVariableCount: integer; + protected + + procedure ClearBuffer; + procedure ClearHeaders; + procedure PrepareResult; virtual; + procedure PrepareVariables; virtual; + function RunTime : boolean; + function GetThreadSafeResourceManager : pointer; + function CreateVirtualFile(A_code: zend_ustr) : boolean; + procedure CloseVirtualFile; + {$IFDEF PHP4} + property VirtualCode : string read FVirtualCode; + {$ENDIF} + function GetEngine : IPHPEngine; + public + TSRMLS_D : pointer; + Thread: TThread; + {fixed} + procedure StartupRequest; virtual; + procedure ShutdownRequest; virtual; + {/fixed} + + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + function EngineActive : boolean; + function Execute : zend_ustr; overload; + function Execute(AFileName : zend_ustr) : zend_ustr; overload; + function RunCode(ACode : zend_ustr) : zend_ustr; overload; + function RunCode(ACode : TStrings) : string; overload; + function VariableByName(AName : zend_ustr) : TPHPVariable; + property PostStream : TMemoryStream read FPostStream; + property ExecuteMethod : TPHPExecuteMethod read FExecuteMethod write FExecuteMethod default emServer; + property FileName : zend_ustr read FFileName write FFileName; + property Variables : TPHPVariables read FVariables write SetVariables; + property VariableCount : integer read GetVariableCount; + property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; + property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; + property OnRequestStartup : TNotifyEvent read FOnRequestStartup write FOnRequestStartup; + property OnRequestShutdown : TNotifyEvent read FOnRequestShutdown write FOnRequestShutdown; + property BeforeExecute : TNotifyEvent read FBeforeExecute write FBeforeExecute; + property AfterExecute : TNotifyEvent read FAfterExecute write FAfterExecute; + property ThreadSafeResourceManager : pointer read GetThreadSafeResourceManager; + property SessionActive : boolean read FSessionActive; + property UseDelimiters : boolean read FUseDelimiters write FUseDelimiters default true; + property MaxExecutionTime : integer read FMaxExecutionTime write FMaxExecutionTime default 0; + property Headers : TPHPHeaders read FHeaders write SetHeaders; + property OnReadPost : TPHPReadPostEvent read FOnReadPost write FOnReadPost; + property RequestType : TPHPRequestType read FRequestType write FRequestType default prtGet; + property ResultBuffer : TPHPMemoryStream read FBuffer; + property OnReadResult : TPHPReadResultEvent read FOnReadResult write FOnReadResult; + property ContentType : zend_ustr read FContentType write FContentType; + end; + + TpsvPHP = class(TpsvCustomPHP) + published + property About; + property FileName; + property Variables; + property OnLogMessage; + property OnScriptError; + property OnRequestStartup; + property OnRequestShutdown; + property OnReadPost; + property BeforeExecute; + property AfterExecute; + property UseDelimiters; + property MaxExecutionTime; + property RequestType; + property OnReadResult; + property ContentType; + end; + + TCustomPHPLibrary = class(TPHPComponent) + private + FExecutor : TpsvCustomPHP; + FLibraryName : zend_ustr; + FFunctions : TPHPFunctions; + FLocked: boolean; + procedure SetFunctions(const Value : TPHPFunctions); + procedure SetExecutor(AValue : TpsvCustomPHP); + procedure SetLibraryName(AValue : zend_ustr); + protected + procedure RegisterLibrary; virtual; + procedure UnregisterLibrary; virtual; + public + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + procedure Refresh; virtual; + property Executor : TpsvCustomPHP read FExecutor write SetExecutor; + property LibraryName : zend_ustr read FLibraryName write SetLibraryName; + property Functions : TPHPFunctions read FFunctions write SetFunctions; + property Locked : boolean read FLocked write FLocked; + end; + { TPHPEngine } + TPHPEngineInitEvent = procedure(Sender:TObject;TSRMLS_DC:Pointer) of object; + TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) + private + FINIPath : zend_ustr; + FOnEngineStartup : TNotifyEvent; + FAddMods : TArray; + FOnEngineShutdown : TNotifyEvent; + FEngineActive : boolean; + FHandleErrors : boolean; + {$IFNDEF PHP540} + FSafeMode : boolean; + FSafeModeGid : boolean; + {$ENDIF} + FRegisterGlobals : boolean; + FHTMLErrors : boolean; + FMaxInputTime : integer; + FConstants : TphpConstants; + FDLLFolder : zend_ustr; + FReportDLLError : boolean; + FLock: TRTLCriticalSection; + FOnScriptError : TPHPErrorEvent; + FOnLogMessage : TPHPLogMessage; + FWaitForShutdown : boolean; + RegNumFunc : Cardinal; + FHash : TStringList; + FLibraryModule : Tzend_module_entry; + FLibraryEntryTable : array of zend_function_entry; + FRequestCount : integer; + procedure SetConstants(Value : TPHPConstants); + function GetConstantCount: integer; + function GetEngineActive : boolean; + protected + TSRMLS_D : pppointer; + procedure StartupPHP; virtual; + procedure PrepareEngine; virtual; + procedure PrepareIniEntry; virtual; + procedure RegisterConstants; virtual; + procedure RegisterInternalConstants(TSRMLS_DC : pointer); virtual; + procedure HandleRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; + return_value_used : integer; TSRMLS_DC : pointer); virtual; + property RequestCount : integer read FRequestCount; + procedure HandleError (Sender : TObject; AText : string; AType : Integer; AFileName : string; ALineNo : integer); + procedure HandleLogMessage(Sender : TObject; AText : string); + procedure RegisterLibrary(ALib : TCustomPHPLibrary); + procedure RefreshLibrary; + procedure UnlockLibraries; + procedure RemoveRequest; + procedure AddRequest; + public + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + procedure AddFunction(FN: zend_pchar; Func: Pointer); + procedure AddModule(Module_entry: Pzend_module_entry); + procedure StartupEngine; virtual; + procedure ShutdownEngine; virtual; + procedure LockEngine; virtual; + procedure UnlockEngine; virtual; + procedure PrepareForShutdown; virtual; + property EngineActive : boolean read GetEngineActive; + property ConstantCount : integer read GetConstantCount; + property WaitForShutdown : boolean read FWaitForShutdown; + procedure ShutdownAndWaitFor; virtual; + property LibraryEntry : Tzend_module_entry read FLibraryModule; + published + property HandleErrors : boolean read FHandleErrors write FHandleErrors default true; + property OnEngineStartup : TNotifyEvent read FOnEngineStartup write FOnEngineStartup; + property OnEngineShutdown : TNotifyEvent read FOnEngineShutdown write FOnEngineShutdown; + property OnScriptError : TPHPErrorEvent read FOnScriptError write FOnScriptError; + property OnLogMessage : TPHPLogMessage read FOnLogMessage write FOnLogMessage; + property IniPath : zend_ustr read FIniPath write FIniPath; + {$IFNDEF PHP540} + property SafeMode : boolean read FSafeMode write FSafeMode default false; + property SafeModeGid : boolean read FSafeModeGid write FSafeModeGid default false; + {$ENDIF} + property RegisterGlobals : boolean read FRegisterGlobals write FRegisterGlobals default true; + property HTMLErrors : boolean read FHTMLErrors write FHTMLErrors default false; + property MaxInputTime : integer read FMaxInputTime write FMaxInputTime default 0; + property Constants : TPHPConstants read FConstants write SetConstants; + property DLLFolder : zend_ustr read FDLLFolder write FDLLFolder; + property ReportDLLError : boolean read FReportDLLError write FReportDLLError; + end; + + TPHPLibrarian = class + private + FLibraries : TList; + public + constructor Create; virtual; + destructor Destroy; override; + procedure AddLibrary(ALibrary : TCustomPHPLibrary); + procedure RemoveLibrary(ALibrary : TCustomPHPLibrary); + function Count : integer; + function GetLibrary(Index : integer) : TCustomPHPLibrary; + property Libraries : TList read FLibraries write FLibraries; + end; +{$IFDEF REGISTER_COLOURS} +const + Colors: array[0..41] of TIdentMapEntry = ( + (Value: clBlack; Name: 'clBlack'), + (Value: clMaroon; Name: 'clMaroon'), + (Value: clGreen; Name: 'clGreen'), + (Value: clOlive; Name: 'clOlive'), + (Value: clNavy; Name: 'clNavy'), + (Value: clPurple; Name: 'clPurple'), + (Value: clTeal; Name: 'clTeal'), + (Value: clGray; Name: 'clGray'), + (Value: clSilver; Name: 'clSilver'), + (Value: clRed; Name: 'clRed'), + (Value: clLime; Name: 'clLime'), + (Value: clYellow; Name: 'clYellow'), + (Value: clBlue; Name: 'clBlue'), + (Value: clFuchsia; Name: 'clFuchsia'), + (Value: clAqua; Name: 'clAqua'), + (Value: clWhite; Name: 'clWhite'), + (Value: clScrollBar; Name: 'clScrollBar'), + (Value: clBackground; Name: 'clBackground'), + (Value: clActiveCaption; Name: 'clActiveCaption'), + (Value: clInactiveCaption; Name: 'clInactiveCaption'), + (Value: clMenu; Name: 'clMenu'), + (Value: clWindow; Name: 'clWindow'), + (Value: clWindowFrame; Name: 'clWindowFrame'), + (Value: clMenuText; Name: 'clMenuText'), + (Value: clWindowText; Name: 'clWindowText'), + (Value: clCaptionText; Name: 'clCaptionText'), + (Value: clActiveBorder; Name: 'clActiveBorder'), + (Value: clInactiveBorder; Name: 'clInactiveBorder'), + (Value: clAppWorkSpace; Name: 'clAppWorkSpace'), + (Value: clHighlight; Name: 'clHighlight'), + (Value: clHighlightText; Name: 'clHighlightText'), + (Value: clBtnFace; Name: 'clBtnFace'), + (Value: clBtnShadow; Name: 'clBtnShadow'), + (Value: clGrayText; Name: 'clGrayText'), + (Value: clBtnText; Name: 'clBtnText'), + (Value: clInactiveCaptionText; Name: 'clInactiveCaptionText'), + (Value: clBtnHighlight; Name: 'clBtnHighlight'), + (Value: cl3DDkShadow; Name: 'cl3DDkShadow'), + (Value: cl3DLight; Name: 'cl3DLight'), + (Value: clInfoText; Name: 'clInfoText'), + (Value: clInfoBk; Name: 'clInfoBk'), + (Value: clNone; Name: 'clNone')); +{$ENDIF} +var + Librarian : TPHPLibrarian = nil; + delphi_sapi_module : sapi_module_struct; + PHPEngine : TPHPEngine = nil; + {$IFDEF php_side_handler} + log_handler_php: string; + fatal_handler_php: string; + phpmd: TpsvPHP; + {$ENDIF} +implementation + +function AddSlashes(const S: zend_ustr): zend_ustr; +begin + Result := StringReplace(S, chr(8), '8', [rfReplaceAll]); + Result := StringReplace(S, '\', '\\', [rfReplaceAll]); + Result := StringReplace(Result, '''', '\''', [rfReplaceAll]); + Result := StringReplace(Result, ' AValue then begin @@ -394,357 +394,358 @@ procedure TCustomPHPLibrary.SetExecutor(AValue: TpsvCustomPHP); end; end; end; - -procedure TCustomPHPLibrary.SetFunctions(const Value: TPHPFunctions); -begin - FFunctions.Assign(Value); -end; - -procedure TCustomPHPLibrary.SetLibraryName(AValue: zend_ustr); -begin - if FLibraryName <> AValue then - begin - FLibraryName := AValue; - end; -end; - -procedure TCustomPHPLibrary.UnregisterLibrary; -begin - if Assigned(Librarian) then - Librarian.RemoveLibrary(Self); -end; - - -procedure InitLibrarian; -begin - Librarian := TPHPLibrarian.Create; -end; - -procedure UninitLibrarian; -begin - if Assigned(Librarian) then - try - Librarian.Free; - finally - Librarian := nil; - end; -end; - -{ TPHPLibrarian } - -procedure TPHPLibrarian.AddLibrary(ALibrary: TCustomPHPLibrary); -begin - if FLibraries.IndexOf(ALibrary) = -1 then - FLibraries.Add(ALibrary); -end; - -function TPHPLibrarian.Count: integer; -begin - Result := FLibraries.Count; -end; - -constructor TPHPLibrarian.Create; -begin - inherited; - FLibraries := TList.Create; -end; - -destructor TPHPLibrarian.Destroy; -begin - FLibraries.Free; - inherited; -end; - -function TPHPLibrarian.GetLibrary(Index: integer): TCustomPHPLibrary; -begin - Result := TCustomPHPLibrary(FLibraries[Index]); -end; - -procedure TPHPLibrarian.RemoveLibrary(ALibrary: TCustomPHPLibrary); -begin - FLibraries.Remove(ALibrary); -end; -{ TPHPMemoryStream } - -constructor TPHPMemoryStream.Create; -begin - inherited; -end; - -procedure TPHPMemoryStream.SetInitialSize(ASize: integer); -begin - Capacity := ASize; -end; -{ Startup functions } -function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; -begin - RegisterInternalClasses(TSRMLS_DC); - RESULT := SUCCESS; -end; - -function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; -begin - RESULT := SUCCESS; -end; - -{Request initialization} -function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; -begin - Result := SUCCESS; -end; - -{Request shutdown} -function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; -begin - Result := SUCCESS; -end; - -{$IFDEF PHP5} - -{PHP 5 only} -function delphi_stream_reader (handle : pointer; buf : zend_pchar; len : size_t; TSRMLS_DC : pointer) : size_t; cdecl; -var - MS : TMemoryStream; -begin - MS := TMemoryStream(handle); - if MS = nil then - result := 0 - else - try - result := MS.Read(buf^, len); - except - result := 0; - end; -end; - -{PHP 5 only} -procedure delphi_stream_closer(handle : pointer; TSRMLS_DC : pointer); cdecl; -var - MS : TMemoryStream; -begin - MS := TMemoryStream(handle); - if MS <> nil then - try - MS.Clear; - except - end; -end; - -{$IFDEF PHP530} -function delphi_stream_fsizer(handle : pointer; TSRMLS_DC : pointer) : size_t; cdecl; -var - MS : TMemoryStream; -begin - MS := TMemoryStream(handle); - if MS <> nil then - try - result := MS.Size; - except - Result := 0; - end - else - Result := 0; -end; -{$ELSE} -{$IFDEF PHP510} - -{ PHP 5.10 and higher } -function delphi_stream_teller(handle : pointer; TSRMLS_DC : pointer) : longint; cdecl; -var - MS : TMemoryStream; -begin - MS := TMemoryStream(handle); - if MS <> nil then - try - result := MS.Size; - except - Result := 0; - end - else - Result := 0; -end; -{$ENDIF} -{$ENDIF} -{$ENDIF} -{ PHP Info functions } -procedure php_info_library(zend_module : Pointer; TSRMLS_DC : pointer); cdecl; -begin -end; - -function php_delphi_startup(sapi_module : Psapi_module_struct) : integer; cdecl; -begin - Result := SUCCESS; -end; - -function php_delphi_deactivate(p : pointer) : integer; cdecl; -begin - result := SUCCESS; -end; - -procedure php_delphi_flush(p : pointer); cdecl; -begin -end; - -function php_delphi_ub_write(str : pointer; len : uint; p : pointer) : integer; cdecl; -var - php : TpsvPHP; - gl : psapi_globals_struct; -begin - Result := 0; - gl := GetSAPIGlobals; - if Assigned(gl) then - begin - php := TpsvPHP(gl^.server_context); - if Assigned(php) then - begin - try - result := php.FBuffer.Write(str^, len); - except - end; - end; - end; -end; -function php_delphi_header_handler(sapi_header : psapi_header_struct; sapi_headers : psapi_headers_struct; TSRMLS_DC : pointer) : integer; cdecl; -begin - Result := SAPI_HEADER_ADD; -end; -function php_delphi_send_header(p1, TSRMLS_DC : pointer) : integer; cdecl; -var - php : TpsvPHP; - gl : psapi_globals_struct; -begin - gl := GetSAPIGlobals; - php := TpsvPHP(gl^.server_context); - if Assigned(p1) and Assigned(php) then - begin - with php.Headers.Add do - Header := String(Psapi_header_struct(p1)^.header); - end; - Result := SAPI_HEADER_SENT_SUCCESSFULLY; -end; - -function php_delphi_read_cookies(p1 : pointer) : pointer; cdecl; -begin - result := nil; -end; -function php_delphi_read_post(buf : zend_pchar; len : uint; TSRMLS_DC : pointer) : integer; cdecl; -var - gl : psapi_globals_struct; - php : TpsvPHP; -begin - gl := GetSAPIGlobals; - if gl = nil then - begin - Result := 0; - Exit; - end; - - php := TpsvPHP(gl^.server_context); - - if PHP = nil then - begin - Result := 0; - Exit; - end; - - if php.PostStream = nil then - begin - Result := 0; - Exit; - end; - - if php.PostStream.Size = 0 then - begin - Result := 0; - Exit; - end; - - Result := php.PostStream.Read(buf^, len); -end; -function GetLocalIP: String; -const WSVer = $101; -var - wsaData: TWSAData; - P: PHostEnt; - Buf: array [0..127] of Char; -begin - Result := ''; - if WSAStartup(WSVer, wsaData) = 0 then begin - if GetHostName(@Buf, 128) = 0 then begin - P := GetHostByName(@Buf); - if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); - end; - WSACleanup; - end; -end; - -procedure php_delphi_register_variables(val : pzval; p : pointer); cdecl; -var - php : TpsvPHP; - gl : psapi_globals_struct; - cnt : integer; - varcnt : integer; -begin - gl := GetSAPIGlobals; - if gl = nil then - Exit; - - php := TpsvPHP(gl^.server_context); - - if PHP = nil then - begin - Exit; - end; - php_register_variable('PHP_SELF', '_', nil, p); - php_register_variable('REMOTE_ADDR', zend_pchar(GetLocalIP()), val, p); - php_register_variable('IP_ADDRESS', zend_pchar(GetLocalIP()), val, p); - {if php.RequestType = prtPost then - php_register_variable('REQUEST_METHOD', 'POST', val, p) - else - php_register_variable('REQUEST_METHOD', 'GET', val, p);} - - varcnt := PHP.Variables.Count; - if varcnt > 0 then - begin - for cnt := 0 to varcnt - 1 do - begin - php_register_variable(zend_pchar(php.Variables[cnt].Name), - zend_pchar(php.Variables[cnt].Value), val, p); - end; - end; -end; -function wvsprintfA(Output: zend_pchar; Format: zend_pchar; arglist: zend_pchar): Integer; stdcall; external 'user32.dll'; -{$IFDEF PHP4} -function WriterProc(Parameter : Pointer) : integer; -var - n : integer; - php : TpsvCustomPHP; - buf : zend_pchar; - k : cardinal; -begin - try - php := TPsvCustomPHP(Parameter); - Buf := zend_pchar(php.FVirtualCode); - k := length(php.FVirtualCode); - repeat - n := _write(php.FVirtualWriteHandle, Buf, k); - if (n <= 0) then - break - else - begin - inc(Buf, n); - dec(K, n); - end; - until (n <= 0); - Close(php.FVirtualWriteHandle); - php.FVirtualWriteHandle := 0; - finally - Result := 0; - ExitThread(0); - end; -end; -{$ENDIF} - {$IFDEF soulengine_build} + +procedure TCustomPHPLibrary.SetFunctions(const Value: TPHPFunctions); +begin + FFunctions.Assign(Value); +end; + +procedure TCustomPHPLibrary.SetLibraryName(AValue: zend_ustr); +begin + if FLibraryName <> AValue then + begin + FLibraryName := AValue; + end; +end; + +procedure TCustomPHPLibrary.UnregisterLibrary; +begin + if Assigned(Librarian) then + Librarian.RemoveLibrary(Self); +end; + + +procedure InitLibrarian; +begin + Librarian := TPHPLibrarian.Create; +end; + +procedure UninitLibrarian; +begin + if Assigned(Librarian) then + try + Librarian.Free; + finally + Librarian := nil; + end; +end; + +{ TPHPLibrarian } + +procedure TPHPLibrarian.AddLibrary(ALibrary: TCustomPHPLibrary); +begin + if FLibraries.IndexOf(ALibrary) = -1 then + FLibraries.Add(ALibrary); +end; + +function TPHPLibrarian.Count: integer; +begin + Result := FLibraries.Count; +end; + +constructor TPHPLibrarian.Create; +begin + inherited; + FLibraries := TList.Create; +end; + +destructor TPHPLibrarian.Destroy; +begin + FLibraries.Free; + inherited; +end; + +function TPHPLibrarian.GetLibrary(Index: integer): TCustomPHPLibrary; +begin + Result := TCustomPHPLibrary(FLibraries[Index]); +end; + +procedure TPHPLibrarian.RemoveLibrary(ALibrary: TCustomPHPLibrary); +begin + FLibraries.Remove(ALibrary); +end; +{ TPHPMemoryStream } + +constructor TPHPMemoryStream.Create; +begin + inherited; +end; + +procedure TPHPMemoryStream.SetInitialSize(ASize: integer); +begin + Capacity := ASize; +end; +{ Startup functions } +function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; +begin + RegisterInternalClasses(TSRMLS_DC); + RESULT := SUCCESS; +end; + +function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; +begin + RESULT := SUCCESS; +end; + +{Request initialization} +function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; +begin + Result := SUCCESS; +end; + +{Request shutdown} +function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl; +begin + Result := SUCCESS; +end; + +{$IFDEF PHP5} + +{PHP 5 only} +function delphi_stream_reader (handle : pointer; buf : zend_pchar; len : size_t; TSRMLS_DC : pointer) : size_t; cdecl; +var + MS : TMemoryStream; +begin + MS := TMemoryStream(handle); + if MS = nil then + result := 0 + else + try + result := MS.Read(buf^, len); + except + result := 0; + end; +end; + +{PHP 5 only} +procedure delphi_stream_closer(handle : pointer; TSRMLS_DC : pointer); cdecl; +var + MS : TMemoryStream; +begin + MS := TMemoryStream(handle); + if MS <> nil then + try + MS.Clear; + except + end; +end; + +{$IFDEF PHP530} +function delphi_stream_fsizer(handle : pointer; TSRMLS_DC : pointer) : size_t; cdecl; +var + MS : TMemoryStream; +begin + MS := TMemoryStream(handle); + if MS <> nil then + try + result := MS.Size; + except + Result := 0; + end + else + Result := 0; +end; +{$ELSE} +{$IFDEF PHP510} + +{ PHP 5.10 and higher } +function delphi_stream_teller(handle : pointer; TSRMLS_DC : pointer) : longint; cdecl; +var + MS : TMemoryStream; +begin + MS := TMemoryStream(handle); + if MS <> nil then + try + result := MS.Size; + except + Result := 0; + end + else + Result := 0; +end; +{$ENDIF} +{$ENDIF} +{$ENDIF} +{ PHP Info functions } +procedure php_info_library(zend_module : Pointer; TSRMLS_DC : pointer); cdecl; +begin +end; + +function php_delphi_startup(sapi_module : Psapi_module_struct) : integer; cdecl; +begin + Result := SUCCESS; +end; + +function php_delphi_deactivate(p : pointer) : integer; cdecl; +begin + result := SUCCESS; +end; + +procedure php_delphi_flush(p : pointer); cdecl; +begin +end; + +function php_delphi_ub_write(str : pointer; len : uint; p : pointer) : integer; cdecl; +var + php : TpsvPHP; + gl : psapi_globals_struct; +begin + Result := 0; + gl := GetSAPIGlobals; + if Assigned(gl) then + begin + php := TpsvPHP(gl^.server_context); + if Assigned(php) then + begin + try + result := php.FBuffer.Write(str^, len); + except + end; + end; + end; +end; +function php_delphi_header_handler(sapi_header : psapi_header_struct; sapi_headers : psapi_headers_struct; TSRMLS_DC : pointer) : integer; cdecl; +begin + Result := SAPI_HEADER_ADD; +end; +function php_delphi_send_header(p1, TSRMLS_DC : pointer) : integer; cdecl; +var + php : TpsvPHP; + gl : psapi_globals_struct; +begin + gl := GetSAPIGlobals; + php := TpsvPHP(gl^.server_context); + if Assigned(p1) and Assigned(php) then + begin + with php.Headers.Add do + Header := String(Psapi_header_struct(p1)^.header); + end; + Result := SAPI_HEADER_SENT_SUCCESSFULLY; +end; + +function php_delphi_read_cookies(p1 : pointer) : pointer; cdecl; +begin + result := nil; +end; +function php_delphi_read_post(buf : zend_pchar; len : uint; TSRMLS_DC : pointer) : integer; cdecl; +var + gl : psapi_globals_struct; + php : TpsvPHP; +begin + gl := GetSAPIGlobals; + if gl = nil then + begin + Result := 0; + Exit; + end; + + php := TpsvPHP(gl^.server_context); + + if PHP = nil then + begin + Result := 0; + Exit; + end; + + if php.PostStream = nil then + begin + Result := 0; + Exit; + end; + + if php.PostStream.Size = 0 then + begin + Result := 0; + Exit; + end; + + Result := php.PostStream.Read(buf^, len); +end; +function GetLocalIP: String; +const WSVer = $101; +var + wsaData: TWSAData; + P: PHostEnt; + Buf: array [0..127] of Char; +begin + Result := ''; + if WSAStartup(WSVer, wsaData) = 0 then begin + if GetHostName(@Buf, 128) = 0 then begin + P := GetHostByName(@Buf); + if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); + end; + WSACleanup; + end; +end; + +procedure php_delphi_register_variables(val : pzval; p : pointer); cdecl; +var + php : TpsvPHP; + gl : psapi_globals_struct; + cnt : integer; + varcnt : integer; +begin + gl := GetSAPIGlobals; + if gl = nil then + Exit; + + php := TpsvPHP(gl^.server_context); + + if PHP = nil then + begin + Exit; + end; + php_register_variable('PHP_SELF', '_', nil, p); + php_register_variable('REMOTE_ADDR', zend_pchar(GetLocalIP()), val, p); + php_register_variable('IP_ADDRESS', zend_pchar(GetLocalIP()), val, p); + {if php.RequestType = prtPost then + php_register_variable('REQUEST_METHOD', 'POST', val, p) + else + php_register_variable('REQUEST_METHOD', 'GET', val, p);} + + varcnt := PHP.Variables.Count; + if varcnt > 0 then + begin + for cnt := 0 to varcnt - 1 do + begin + php_register_variable(zend_pchar(php.Variables[cnt].Name), + zend_pchar(php.Variables[cnt].Value), val, p); + end; + end; +end; +function wvsprintfA(Output: zend_pchar; Format: zend_pchar; arglist: zend_pchar): Integer; stdcall; external 'user32.dll'; +{$IFDEF PHP4} +function WriterProc(Parameter : Pointer) : integer; +var + n : integer; + php : TpsvCustomPHP; + buf : zend_pchar; + k : cardinal; +begin + try + php := TPsvCustomPHP(Parameter); + Buf := zend_pchar(php.FVirtualCode); + k := length(php.FVirtualCode); + repeat + n := _write(php.FVirtualWriteHandle, Buf, k); + if (n <= 0) then + break + else + begin + inc(Buf, n); + dec(K, n); + end; + until (n <= 0); + Close(php.FVirtualWriteHandle); + php.FVirtualWriteHandle := 0; + finally + Result := 0; + ExitThread(0); + end; +end; +{$ENDIF} + +{$IFDEF php_side_handler} procedure delphi_error_cb(AType: Integer; const AFname: zend_pchar; const ALineNo: UINT; const AFormat: zend_pchar; args: zend_pchar) cdecl; var @@ -800,9 +801,9 @@ procedure delphi_error_cb(AType: Integer; const AFname: zend_pchar; const ALineN MessageDlg(LText, mtError, [mbOk], 0) end; end; -end; -{$ELSE} -procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; +end; +{$ELSE} +procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; const error_lineno : uint; const _format : zend_pchar; args : zend_pchar); cdecl; var buffer : array[0..1023] of zend_uchar; @@ -862,7 +863,7 @@ procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; else error_type_str := 'Unknown error'; end; - {$IFDEF CUTTED_PHP7dll} + {$IFDEF COMPILER_php7pv} ShowMessage( Format ('PHP4DELPHI %s: %s in %s on line %d', [error_type_str, buffer, error_filename, error_lineno])); @@ -875,27 +876,27 @@ procedure delphi_error_cb(_type : integer; const error_filename : zend_pchar; end; if PHPLoaded then _zend_bailout(error_filename, error_lineno); -end; -{$ENDIF} -{$IFDEF soulengine_build} -function php_delphi_log_message(msg : zend_pchar) : integer; cdecl; -var - php : TpsvPHP; - gl : psapi_globals_struct; - S: zend_ustr; -begin - Result := 0; - gl := GetSAPIGlobals; - if gl = nil then - Exit; - - php := TpsvPHP(gl^.server_context); - if Assigned(PHPEngine) then - begin - if Assigned(PHPEngine.OnLogMessage) then - phpEngine.HandleLogMessage(php, msg) - else - if log_handler_php <> '' then +end; +{$ENDIF} +{$IFDEF php_side_handler} +function php_delphi_log_message(msg : zend_pchar) : integer; cdecl; +var + php : TpsvPHP; + gl : psapi_globals_struct; + S: zend_ustr; +begin + Result := 0; + gl := GetSAPIGlobals; + if gl = nil then + Exit; + + php := TpsvPHP(gl^.server_context); + if Assigned(PHPEngine) then + begin + if Assigned(PHPEngine.OnLogMessage) then + phpEngine.HandleLogMessage(php, msg) + else + if log_handler_php <> '' then begin S := zend_ustr(fatal_handler_php + '(' + '''' + AddSlashes(msg) + '''' + ');' + ' ?>'); @@ -905,15 +906,15 @@ function php_delphi_log_message(msg : zend_pchar) : integer; cdecl; phpmd.RunCode(S); S := ''; - end - else - MessageBoxA(0, MSG, 'PHP4Delphi', MB_OK) - end - else - MessageBoxA(0, msg, 'PHP4Delphi', MB_OK); -end; -{$ELSE} -function php_delphi_log_message(msg : Pchar) : integer; cdecl; + end + else + MessageBoxA(0, MSG, 'PHP4Delphi', MB_OK) + end + else + MessageBoxA(0, msg, 'PHP4Delphi', MB_OK); +end; +{$ELSE} +function php_delphi_log_message(msg : Pchar) : integer; cdecl; var php : TpsvPHP; gl : psapi_globals_struct; @@ -932,1083 +933,1083 @@ function php_delphi_log_message(msg : Pchar) : integer; cdecl; else MessageBox(0, msg, 'PHP4Delphi', MB_OK); result := 0; -end; -{$ENDIF} -{ Request sender/dispatcher } - -{$IFDEF PHP510} -procedure DispatchRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ELSE} -procedure DispatchRequest(ht : integer; return_value : pzval; this_ptr : pzval; - return_value_used : integer; TSRMLS_DC : pointer); cdecl; -{$ENDIF} -var - php : TpsvPHP; - gl : psapi_globals_struct; - Lib : IPHPEngine; -{$IFNDEF PHP510} - return_value_ptr : ppzval; -{$ENDIF} -begin - {$IFNDEF PHP510} - return_value_ptr := nil; - {$ENDIF} - ZVALVAL(return_value); - gl := GetSAPIGlobals; - if gl = nil then - Exit; - php := TpsvPHP(gl^.server_context); - if Assigned(php) then - begin - try - Lib := php.GetEngine; - if lib <> nil then - Lib.HandleRequest(ht, return_value, return_value_ptr, this_ptr, return_value_used, TSRMLS_DC); - except - ZVALVAL(return_value); - end; - end; -end; - -{ TpsvCustomPHP } - -constructor TpsvCustomPHP.Create(AOwner: TComponent); -begin - inherited; - FMaxExecutionTime := 0; - FExecuteMethod := emServer; - FSessionActive := false; - FVariables := TPHPVariables.Create(Self); - FHeaders := TPHPHeaders.Create(Self); - FUseDelimiters := true; - FRequestType := prtGet; - FBuffer := TPHPMemoryStream.Create; - {$IFDEF PHP4} - FVirtualCode := ''; - {$ELSE} - FVirtualStream := TStringStream.Create; - {$ENDIF} -end; - -destructor TpsvCustomPHP.Destroy; -begin - FVariables.Free; - FHeaders.Free; - FSessionActive := False; - FBuffer.Free; - {$IFDEF PHP4} - FVirtualCode := ''; - {$ELSE} - if FVirtualStream <> nil then - FreeAndNil(FVirtualStream); - {$ENDIF} - if Assigned(FPostStream) then - FreeAndNil(FPostStream); - inherited; -end; - -procedure TpsvCustomPHP.ClearBuffer; -begin - FBuffer.Clear; -end; - -procedure TpsvCustomPHP.ClearHeaders; -begin - FHeaders.Clear; -end; - - -function TpsvCustomPHP.Execute : zend_ustr; -var - file_handle : zend_file_handle; - {$IFDEF PHP4} - thread_id : cardinal; - {$ENDIF} - {$IFDEF PHP5} - ZendStream : TZendStream; - {$ENDIF} -begin - - if not EngineActive then - begin - Result := ''; - Exit; - end; - - if PHPEngine.WaitForShutdown then - begin - Result := ''; - Exit; - end; - - PHPEngine.AddRequest; - - try - ClearHeaders; - ClearBuffer; - - if Assigned(FBeforeExecute) then - FBeforeExecute(Self); - - - - FTerminated := false; - if not FUseMapping then - begin - if not FileExists(FFileName) then - raise Exception.CreateFmt('File %s does not exists', [FFileName]); - end; - StartupRequest; - - ZeroMemory(@file_handle, sizeof(zend_file_handle)); - - if FUseMapping then - begin - {$IFDEF PHP5} - ZeroMemory(@ZendStream, sizeof(ZendStream)); - ZendStream.reader := delphi_stream_reader; - ZendStream.closer := delphi_stream_closer; - {$IFDEF PHP530} - ZendStream.fsizer := delphi_stream_fsizer; - {$ELSE} - {$IFDEF PHP510} - ZendStream.fteller := delphi_stream_teller; - {$ENDIF} - ZendStream.interactive := 0; - {$ENDIF} - ZendStream.handle := FVirtualStream; - - file_handle._type := ZEND_HANDLE_STREAM; - file_handle.opened_path := nil; - file_handle.filename := '-'; - file_handle.free_filename := 0; - file_handle.handle.stream := ZendStream; - {$ELSE} - {for PHP4 only} - file_handle._type := ZEND_HANDLE_FD; - file_handle.opened_path := nil; - file_handle.filename := '-'; - file_handle.free_filename := 0; - file_handle.handle.fd := FVirtualReadHandle; - FWriterHandle := BeginThread(nil, 8192, @WriterProc, Self, 0, thread_id); - {$ENDIF} - end - else - begin - file_handle._type := ZEND_HANDLE_FILENAME; - file_handle.filename := zend_pchar(FFileName); - file_handle.opened_path := nil; - file_handle.free_filename := 0; - end; - - try - begin - PHPAPI.php_execute_script(@file_handle, TSRMLS_D); - end - except - FBuffer.Clear; - try - ts_free_thread; - except - - end; - end; - - PrepareResult; - - - if Assigned(FAfterExecute) then - FAfterExecute(Self); - - //ShutdownRequest; - - FBuffer.Position := 0; - if Assigned(FOnReadResult) then - begin - FOnReadResult(Self, FBuffer); - Result := ''; - end - else - begin - SetLength(Result, FBuffer.Size); - FBuffer.Read(Result[1], FBuffer.Size); - end; - FBuffer.Clear; - {$IFDEF PHP4} - FVirtualCode := ''; - {$ENDIF} - finally - PHPEngine.RemoveRequest; - end; -end; - -function TpsvCustomPHP.RunCode(Acode : zend_ustr) : zend_ustr; -begin - if not EngineActive then - begin - Result := ''; - Exit; - end; - - ClearHeaders; - ClearBuffer; - FUseMapping := true; - - try - if FUseDelimiters then - begin - if Pos('', [ACode]); - end; - if not CreateVirtualFile(ACode) then - begin - Result := ''; - Exit; - end; - Result := Execute; - finally - FUseMapping := false; - end; -end; - - -function TpsvCustomPHP.RunCode(ACode: TStrings): string; -begin - if Assigned(ACode) then - Result := RunCode(ACode.Text); -end; - - -procedure TpsvCustomPHP.SetVariables(Value: TPHPVariables); -begin - FVariables.Assign(Value); -end; - -procedure TpsvCustomPHP.SetHeaders(Value : TPHPHeaders); -begin - FHeaders.Assign(Value); -end; - - - -function TpsvCustomPHP.Execute(AFileName: zend_ustr): zend_ustr; -begin - FFileName := AFileName; - Result := Execute; -end; - -procedure TpsvCustomPHP.PrepareResult; -var - ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; - data: ^ppzval; - cnt : integer; - variable : pzval; -begin - if FVariables.Count = 0 then - Exit; - - if FExecuteMethod = emServer then - ht := GetSymbolsTable - else - ht := GetTrackHash('_GET'); - if Assigned(ht) then - begin - for cnt := 0 to FVariables.Count - 1 do - begin - new(data); - try - if zend_hash_find(ht, zend_pchar(FVariables[cnt].Name), - strlen(zend_pchar(FVariables[cnt].Name)) + 1, data) = SUCCESS then - begin - variable := data^^; - convert_to_string(variable); - FVariables[cnt].Value := Z_STRVAL(variable); - end; - finally - freemem(data); - end; - end; - end; -end; - -function TpsvCustomPHP.VariableByName(AName: zend_ustr): TPHPVariable; -begin - Result := FVariables.ByName(AName); -end; - -{Indicates activity of PHP Engine} -function TpsvCustomPHP.EngineActive : boolean; -begin - if Assigned(PHPEngine) then - Result := PHPEngine.EngineActive - else - Result := false; -end; - -procedure TpsvCustomPHP.StartupRequest; -var - gl : psapi_globals_struct; - TimeStr : string; -begin - if not EngineActive then - raise EDelphiErrorEx.Create('PHP engine is not active '); - - if FSessionActive then - Exit; - - TSRMLS_D := tsrmls_fetch; - - gl := GetSAPIGlobals; - gl^.server_context := Self; - //ShowMessage('TpsvCustomPHP.StartupRequest -- RegisterGlobals'); - if PHPEngine.RegisterGlobals then - GetPHPGlobals(TSRMLS_D)^.register_globals := true; - //ShowMessage('TpsvCustomPHP.StartupRequest -- Try'); - try - //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnReadPost'); - if Assigned(FOnReadPost) then - FOnReadPost(Self, FPostStream); - //ShowMessage('TpsvCustomPHP.StartupRequest -- zend_alter_ini_entry'); - zend_alter_ini_entry('max_execution_time', 19, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME); - //ShowMessage('TpsvCustomPHP.StartupRequest -- php_request_startup'); - php_request_startup(TSRMLS_D); - //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnRequestStartup'); - if Assigned(FOnRequestStartup) then - FOnRequestStartup(Self); - //ShowMessage('TpsvCustomPHP.StartupRequest --'); - FSessionActive := true; - except - FSessionActive := false; - end; -end; - -function TpsvCustomPHP.RunTime: boolean; -begin - Result := not (csDesigning in ComponentState); -end; - -function TpsvCustomPHP.GetThreadSafeResourceManager: pointer; -begin - Result := TSRMLS_D; -end; - -function TpsvCustomPHP.GetVariableCount: integer; -begin - Result := FVariables.Count; -end; - - -procedure TpsvCustomPHP.ShutdownRequest; -var - gl : psapi_globals_struct; -begin - if not FSessionActive then - Exit; - try - - if not FTerminated then - begin - try - php_request_shutdown(nil); - except - end; - gl := GetSAPIGlobals; - gl^.server_context := nil; - end; - - - if Assigned(FOnRequestShutdown) then - FOnRequestShutdown(Self); - - finally - FSessionActive := false; - end; - -end; - -procedure TpsvCustomPHP.PrepareVariables; -var - ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; - data: ^ppzval; - cnt : integer; - {$IFDEF PHP5} - EG : pzend_executor_globals; - {$ENDIF} -begin - {$IFDEF PHP4} - ht := GetSymbolsTable; - {$ELSE} - begin - EG := GetExecutorGlobals; - if Assigned(EG) then - ht := @EG.symbol_table - else - ht := nil; - end; - {$ENDIF} - - if Assigned(ht) then - begin - for cnt := 0 to FVariables.Count - 1 do - begin - new(data); - try - if zend_hash_find(ht, zend_pchar(FVariables[cnt].Name), - strlen(zend_pchar(FVariables[cnt].Name)) + 1, data) = SUCCESS then - begin - {$IFDEF PHP7} - if (data^^^.u1.v._type = IS_STRING) then - {$ELSE} - if (data^^^._type = IS_STRING) then - {$ENDIF} - begin - efree(data^^^.value.str.val); - ZVAL_STRING(data^^, zend_pchar(FVariables[cnt].Value), true); - end - else - begin - ZVAL_STRING(data^^, zend_pchar(FVariables[cnt].Value), true); - end; - end; - finally - freemem(data); - end; - end; - end; -end; - -procedure TpsvCustomPHP.CloseVirtualFile; -begin - {$IFDEF PHP4} - if FWriterHandle <> 0 then - begin - WaitForSingleObject(FWriterHandle, INFINITE); - CloseHandle(FWriterHandle); - FWriterHandle := 0; - end; - {$ELSE} - FVirtualStream.Clear; - {$ENDIF} -end; - -function TpsvCustomPHP.CreateVirtualFile(A_code : zend_ustr): boolean; -var -{$IFDEF PHP4} -_handles : array[0..1] of THandle; -{$ENDIF} -sc:PUTF8Char; -begin - - Result := false; - {$IFDEF PHP4} - if ACode = '' then - begin - FVirtualReadHandle := 0; - FVirtualWriteHandle := 0; - Exit; {empty buffer was provided} - end; - - FVirtualCode := A_code; - - if pipe(@_handles, 4096, 0) = -1 then - begin - FVirtualReadHandle := 0; - FVirtualWriteHandle := 0; - FVirtualCode := ''; - Exit; - end; - - FVirtualReadHandle := _handles[0]; - FVirtualWriteHandle := _handles[1]; - Result := true; - {$ELSE} - if A_code = '' then - Exit; - try - FVirtualStream.Clear; - FVirtualStream.WriteString(A_code); - FVirtualStream.Seek(0, TSeekOrigin.soBeginning); +end; +{$ENDIF} +{ Request sender/dispatcher } + +{$IFDEF PHP510} +procedure DispatchRequest(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval; + return_value_used : integer; TSRMLS_DC : pointer); cdecl; +{$ELSE} +procedure DispatchRequest(ht : integer; return_value : pzval; this_ptr : pzval; + return_value_used : integer; TSRMLS_DC : pointer); cdecl; +{$ENDIF} +var + php : TpsvPHP; + gl : psapi_globals_struct; + Lib : IPHPEngine; +{$IFNDEF PHP510} + return_value_ptr : ppzval; +{$ENDIF} +begin + {$IFNDEF PHP510} + return_value_ptr := nil; + {$ENDIF} + ZVALVAL(return_value); + gl := GetSAPIGlobals; + if gl = nil then + Exit; + php := TpsvPHP(gl^.server_context); + if Assigned(php) then + begin + try + Lib := php.GetEngine; + if lib <> nil then + Lib.HandleRequest(ht, return_value, return_value_ptr, this_ptr, return_value_used, TSRMLS_DC); + except + ZVALVAL(return_value); + end; + end; +end; + +{ TpsvCustomPHP } + +constructor TpsvCustomPHP.Create(AOwner: TComponent); +begin + inherited; + FMaxExecutionTime := 0; + FExecuteMethod := emServer; + FSessionActive := false; + FVariables := TPHPVariables.Create(Self); + FHeaders := TPHPHeaders.Create(Self); + FUseDelimiters := true; + FRequestType := prtGet; + FBuffer := TPHPMemoryStream.Create; + {$IFDEF PHP4} + FVirtualCode := ''; + {$ELSE} + FVirtualStream := TStringStream.Create; + {$ENDIF} +end; + +destructor TpsvCustomPHP.Destroy; +begin + FVariables.Free; + FHeaders.Free; + FSessionActive := False; + FBuffer.Free; + {$IFDEF PHP4} + FVirtualCode := ''; + {$ELSE} + if FVirtualStream <> nil then + FreeAndNil(FVirtualStream); + {$ENDIF} + if Assigned(FPostStream) then + FreeAndNil(FPostStream); + inherited; +end; + +procedure TpsvCustomPHP.ClearBuffer; +begin + FBuffer.Clear; +end; + +procedure TpsvCustomPHP.ClearHeaders; +begin + FHeaders.Clear; +end; + + +function TpsvCustomPHP.Execute : zend_ustr; +var + file_handle : zend_file_handle; + {$IFDEF PHP4} + thread_id : cardinal; + {$ENDIF} + {$IFDEF PHP5} + ZendStream : TZendStream; + {$ENDIF} +begin + + if not EngineActive then + begin + Result := ''; + Exit; + end; + + if PHPEngine.WaitForShutdown then + begin + Result := ''; + Exit; + end; + + PHPEngine.AddRequest; + + try + ClearHeaders; + ClearBuffer; + + if Assigned(FBeforeExecute) then + FBeforeExecute(Self); + + + + FTerminated := false; + if not FUseMapping then + begin + if not FileExists(FFileName) then + raise Exception.CreateFmt('File %s does not exists', [FFileName]); + end; + StartupRequest; + + ZeroMemory(@file_handle, sizeof(zend_file_handle)); + + if FUseMapping then + begin + {$IFDEF PHP5} + ZeroMemory(@ZendStream, sizeof(ZendStream)); + ZendStream.reader := delphi_stream_reader; + ZendStream.closer := delphi_stream_closer; + {$IFDEF PHP530} + ZendStream.fsizer := delphi_stream_fsizer; + {$ELSE} + {$IFDEF PHP510} + ZendStream.fteller := delphi_stream_teller; + {$ENDIF} + ZendStream.interactive := 0; + {$ENDIF} + ZendStream.handle := FVirtualStream; + + file_handle._type := ZEND_HANDLE_STREAM; + file_handle.opened_path := nil; + file_handle.filename := '-'; + file_handle.free_filename := 0; + file_handle.handle.stream := ZendStream; + {$ELSE} + {for PHP4 only} + file_handle._type := ZEND_HANDLE_FD; + file_handle.opened_path := nil; + file_handle.filename := '-'; + file_handle.free_filename := 0; + file_handle.handle.fd := FVirtualReadHandle; + FWriterHandle := BeginThread(nil, 8192, @WriterProc, Self, 0, thread_id); + {$ENDIF} + end + else + begin + file_handle._type := ZEND_HANDLE_FILENAME; + file_handle.filename := zend_pchar(FFileName); + file_handle.opened_path := nil; + file_handle.free_filename := 0; + end; + + try + begin + PHPAPI.php_execute_script(@file_handle, TSRMLS_D); + end + except + FBuffer.Clear; + try + ts_free_thread; + except + + end; + end; + + PrepareResult; + + + if Assigned(FAfterExecute) then + FAfterExecute(Self); + + //ShutdownRequest; + + FBuffer.Position := 0; + if Assigned(FOnReadResult) then + begin + FOnReadResult(Self, FBuffer); + Result := ''; + end + else + begin + SetLength(Result, FBuffer.Size); + FBuffer.Read(Result[1], FBuffer.Size); + end; + FBuffer.Clear; + {$IFDEF PHP4} + FVirtualCode := ''; + {$ENDIF} + finally + PHPEngine.RemoveRequest; + end; +end; + +function TpsvCustomPHP.RunCode(Acode : zend_ustr) : zend_ustr; +begin + if not EngineActive then + begin + Result := ''; + Exit; + end; + + ClearHeaders; + ClearBuffer; + FUseMapping := true; + + try + if FUseDelimiters then + begin + if Pos('', [ACode]); + end; + if not CreateVirtualFile(ACode) then + begin + Result := ''; + Exit; + end; + Result := Execute; + finally + FUseMapping := false; + end; +end; + + +function TpsvCustomPHP.RunCode(ACode: TStrings): string; +begin + if Assigned(ACode) then + Result := RunCode(ACode.Text); +end; + + +procedure TpsvCustomPHP.SetVariables(Value: TPHPVariables); +begin + FVariables.Assign(Value); +end; + +procedure TpsvCustomPHP.SetHeaders(Value : TPHPHeaders); +begin + FHeaders.Assign(Value); +end; + + + +function TpsvCustomPHP.Execute(AFileName: zend_ustr): zend_ustr; +begin + FFileName := AFileName; + Result := Execute; +end; + +procedure TpsvCustomPHP.PrepareResult; +var + ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; + data: ^ppzval; + cnt : integer; + variable : pzval; +begin + if FVariables.Count = 0 then + Exit; + + if FExecuteMethod = emServer then + ht := GetSymbolsTable + else + ht := GetTrackHash('_GET'); + if Assigned(ht) then + begin + for cnt := 0 to FVariables.Count - 1 do + begin + new(data); + try + if zend_hash_find(ht, zend_pchar(FVariables[cnt].Name), + strlen(zend_pchar(FVariables[cnt].Name)) + 1, data) = SUCCESS then + begin + variable := data^^; + convert_to_string(variable); + FVariables[cnt].Value := Z_STRVAL(variable); + end; + finally + freemem(data); + end; + end; + end; +end; + +function TpsvCustomPHP.VariableByName(AName: zend_ustr): TPHPVariable; +begin + Result := FVariables.ByName(AName); +end; + +{Indicates activity of PHP Engine} +function TpsvCustomPHP.EngineActive : boolean; +begin + if Assigned(PHPEngine) then + Result := PHPEngine.EngineActive + else + Result := false; +end; + +procedure TpsvCustomPHP.StartupRequest; +var + gl : psapi_globals_struct; + TimeStr : string; +begin + if not EngineActive then + raise EDelphiErrorEx.Create('PHP engine is not active '); + + if FSessionActive then + Exit; + + TSRMLS_D := tsrmls_fetch; + + gl := GetSAPIGlobals; + gl^.server_context := Self; + //ShowMessage('TpsvCustomPHP.StartupRequest -- RegisterGlobals'); + if PHPEngine.RegisterGlobals then + GetPHPGlobals(TSRMLS_D)^.register_globals := true; + //ShowMessage('TpsvCustomPHP.StartupRequest -- Try'); + try + //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnReadPost'); + if Assigned(FOnReadPost) then + FOnReadPost(Self, FPostStream); + //ShowMessage('TpsvCustomPHP.StartupRequest -- zend_alter_ini_entry'); + zend_alter_ini_entry('max_execution_time', 19, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_RUNTIME); + //ShowMessage('TpsvCustomPHP.StartupRequest -- php_request_startup'); + php_request_startup(TSRMLS_D); + //ShowMessage('TpsvCustomPHP.StartupRequest -- FOnRequestStartup'); + if Assigned(FOnRequestStartup) then + FOnRequestStartup(Self); + //ShowMessage('TpsvCustomPHP.StartupRequest --'); + FSessionActive := true; + except + FSessionActive := false; + end; +end; + +function TpsvCustomPHP.RunTime: boolean; +begin + Result := not (csDesigning in ComponentState); +end; + +function TpsvCustomPHP.GetThreadSafeResourceManager: pointer; +begin + Result := TSRMLS_D; +end; + +function TpsvCustomPHP.GetVariableCount: integer; +begin + Result := FVariables.Count; +end; + + +procedure TpsvCustomPHP.ShutdownRequest; +var + gl : psapi_globals_struct; +begin + if not FSessionActive then + Exit; + try + + if not FTerminated then + begin + try + php_request_shutdown(nil); + except + end; + gl := GetSAPIGlobals; + gl^.server_context := nil; + end; + + + if Assigned(FOnRequestShutdown) then + FOnRequestShutdown(Self); + + finally + FSessionActive := false; + end; + +end; + +procedure TpsvCustomPHP.PrepareVariables; +var + ht : {$IFDEF PHP7}Pzend_array{$ELSE}PHashTable{$ENDIF}; + data: ^ppzval; + cnt : integer; + {$IFDEF PHP5} + EG : pzend_executor_globals; + {$ENDIF} +begin + {$IFDEF PHP4} + ht := GetSymbolsTable; + {$ELSE} + begin + EG := GetExecutorGlobals; + if Assigned(EG) then + ht := @EG.symbol_table + else + ht := nil; + end; + {$ENDIF} + + if Assigned(ht) then + begin + for cnt := 0 to FVariables.Count - 1 do + begin + new(data); + try + if zend_hash_find(ht, zend_pchar(FVariables[cnt].Name), + strlen(zend_pchar(FVariables[cnt].Name)) + 1, data) = SUCCESS then + begin + {$IFDEF PHP7} + if (data^^^.u1.v._type = IS_STRING) then + {$ELSE} + if (data^^^._type = IS_STRING) then + {$ENDIF} + begin + efree(data^^^.value.str.val); + ZVAL_STRING(data^^, zend_pchar(FVariables[cnt].Value), true); + end + else + begin + ZVAL_STRING(data^^, zend_pchar(FVariables[cnt].Value), true); + end; + end; + finally + freemem(data); + end; + end; + end; +end; + +procedure TpsvCustomPHP.CloseVirtualFile; +begin + {$IFDEF PHP4} + if FWriterHandle <> 0 then + begin + WaitForSingleObject(FWriterHandle, INFINITE); + CloseHandle(FWriterHandle); + FWriterHandle := 0; + end; + {$ELSE} + FVirtualStream.Clear; + {$ENDIF} +end; + +function TpsvCustomPHP.CreateVirtualFile(A_code : zend_ustr): boolean; +var +{$IFDEF PHP4} +_handles : array[0..1] of THandle; +{$ENDIF} +sc:PUTF8Char; +begin + + Result := false; + {$IFDEF PHP4} + if ACode = '' then + begin + FVirtualReadHandle := 0; + FVirtualWriteHandle := 0; + Exit; {empty buffer was provided} + end; + + FVirtualCode := A_code; + + if pipe(@_handles, 4096, 0) = -1 then + begin + FVirtualReadHandle := 0; + FVirtualWriteHandle := 0; + FVirtualCode := ''; + Exit; + end; + + FVirtualReadHandle := _handles[0]; + FVirtualWriteHandle := _handles[1]; + Result := true; + {$ELSE} + if A_code = '' then + Exit; + try + FVirtualStream.Clear; + FVirtualStream.WriteString(A_code); + FVirtualStream.Seek(0, TSeekOrigin.soBeginning); finally Result := True; - end; - {$ENDIF} -end; - - -function TpsvCustomPHP.GetEngine: IPHPEngine; -begin - Result := PHPEngine; -end; - -{ TPHPEngine } - - -constructor TPHPEngine.Create(AOwner: TComponent); -begin - inherited; - if Assigned(PHPEngine) then - raise Exception.Create('Only one instance of PHP engine per application'); - FEngineActive := false; - FHandleErrors := true; - {$IFNDEF PHP540} - FSafeMode := false; - FSafeModeGid := false; - {$ENDIF} - FRegisterGlobals := true; - FHTMLErrors := false; - FMaxInputTime := 0; - FWaitForShutdown := false; - FConstants := TPHPConstants.Create(Self); - FRequestCount := 0; - FHash := TStringList.Create; - FHash.Duplicates := dupError; - FHash.Sorted := true; - InitializeCriticalSection(FLock); - PHPEngine := Self; - -end; - -destructor TPHPEngine.Destroy; -begin - ShutdownAndWaitFor; - FEngineActive := false; - FConstants.Free; - FHash.Free; - DeleteCriticalSection(FLock); - if (PHPEngine = Self) then - PHPEngine := nil; - inherited; - if PHPLoaded then - UnloadPHP; -end; - -function TPHPEngine.GetConstantCount: integer; -begin - Result := FConstants.Count; -end; -{ -procedure log(i:String); -var f:TextFile; -begin + end; + {$ENDIF} +end; + + +function TpsvCustomPHP.GetEngine: IPHPEngine; +begin + Result := PHPEngine; +end; + +{ TPHPEngine } + + +constructor TPHPEngine.Create(AOwner: TComponent); +begin + inherited; + if Assigned(PHPEngine) then + raise Exception.Create('Only one instance of PHP engine per application'); + FEngineActive := false; + FHandleErrors := true; + {$IFNDEF PHP540} + FSafeMode := false; + FSafeModeGid := false; + {$ENDIF} + FRegisterGlobals := true; + FHTMLErrors := false; + FMaxInputTime := 0; + FWaitForShutdown := false; + FConstants := TPHPConstants.Create(Self); + FRequestCount := 0; + FHash := TStringList.Create; + FHash.Duplicates := dupError; + FHash.Sorted := true; + InitializeCriticalSection(FLock); + PHPEngine := Self; + +end; + +destructor TPHPEngine.Destroy; +begin + ShutdownAndWaitFor; + FEngineActive := false; + FConstants.Free; + FHash.Free; + DeleteCriticalSection(FLock); + if (PHPEngine = Self) then + PHPEngine := nil; + inherited; + if PHPLoaded then + UnloadPHP; +end; + +function TPHPEngine.GetConstantCount: integer; +begin + Result := FConstants.Count; +end; +{ +procedure log(i:String); +var f:TextFile; +begin AssignFile(f, 'log.txt'); Append(f); Write(f, #10 + #13 + i); CloseFile(f); -end; -} -procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; - return_value_ptr: ppzval; this_ptr: pzval; return_value_used: integer; - TSRMLS_DC: pointer); - -var - Params : pzval_array; - AFunction : TPHPFunction; - j : integer; - FActiveFunctionName : string; - FunctionIndex : integer; - FZendVar : TZendVariable; - FParameters : TFunctionParams; - ReturnValue : variant; -begin - FParameters := TFunctionParams.Create(nil, TFunctionParam); - - if ht > 0 then - begin - if ( not (zend_get_parameters_my(ht, Params, TSRMLS_DC) = SUCCESS )) then - begin - zend_wrong_param_count(TSRMLS_DC); - Exit; - end; - end; - - FActiveFunctionName := get_active_function_name(TSRMLS_DC); - if FHash.Find(FActiveFunctionName, FunctionIndex) then - AFunction := TPHPFunction(FHash.Objects[FunctionIndex]) - else - AFunction := nil; - - if Assigned(AFunction) then - begin - if AFunction.Collection = nil then - Exit; {library was destroyed} - - if Assigned(AFunction.OnExecute) then - begin - if AFunction.Parameters.Count <> ht then - begin - zend_wrong_param_count(TSRMLS_DC); - Exit; - end; - - FParameters.Assign(AFunction.Parameters); - if ht > 0 then - begin - for j := 0 to ht - 1 do - begin - if not IsParamTypeCorrect(FParameters[j].ParamType, Params[j]^) then - begin - zend_error(E_WARNING, zend_pchar( - {$IFDEF PHP_UNICODE}Format{$ELSE}AnsiFormat{$ENDIF} - ('Wrong parameter type for %s()', [FActiveFunctionName]))); - Exit; - end; - FParameters[j].ZendValue := (Params[j]^); - end; - end; { if ht > 0} - //log(FActiveFunctionName); - FZendVar := TZendVariable.Create; - FZendVar.AsZendVariable := return_value; - AFunction.OnExecute(Self, FParameters, ReturnValue, FZendVar, TSRMLS_DC); - if Assigned(FZendVar) then - begin - if FZendVar.ISNull then {perform variant conversion} - VariantToZend(ReturnValue, return_value); - FZendVar.Free; - end - else - VariantToZend(ReturnValue, return_value); - end; {if assigned AFunction.OnExecute} - end; - FParameters.Free; - dispose_pzval_array(Params); -end; - -procedure TPHPEngine.PrepareIniEntry; -var - p, p2 : pointer; - TimeStr : string; -begin - if not PHPLoaded then - Exit; - - if FHandleErrors then - begin - HFunc(@delphi_error_cb, 'zend_error_cb'); - end; - {$IFNDEF PHP540} - if FSafeMode then - zend_alter_ini_entry('safe_mode', 10, '1', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP) - else - {$ENDIF} - zend_alter_ini_entry('safe_mode', 10, '0', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP); - {$IFNDEF PHP540} - if FSafeModeGID then - zend_alter_ini_entry('safe_mode_gid', 14, '1', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP) - else - {$ENDIF} - zend_alter_ini_entry('safe_mode_gid', 14, '0', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP); - - zend_alter_ini_entry('register_argc_argv', 19, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); - - if FRegisterGlobals then - zend_alter_ini_entry('register_globals', 17, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE) - else - zend_alter_ini_entry('register_globals', 17, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); - - if FHTMLErrors then - zend_alter_ini_entry('html_errors', 12, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE) - else - zend_alter_ini_entry('html_errors', 12, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); - - zend_alter_ini_entry('implicit_flush', 15, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); - TimeStr := IntToStr(FMaxInputTime); - zend_alter_ini_entry('max_input_time', 15, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); -end; - -procedure TPHPEngine.PrepareEngine; -begin - delphi_sapi_module.name := 'embed'; {to solve a problem with dl()} - delphi_sapi_module.pretty_name := 'PHP for Delphi'; - delphi_sapi_module.startup := php_delphi_startup; - delphi_sapi_module.shutdown := nil; //php_module_shutdown_wrapper; - delphi_sapi_module.activate:= nil; - delphi_sapi_module.deactivate := @php_delphi_deactivate; - delphi_sapi_module.ub_write := @php_delphi_ub_write; - delphi_sapi_module.flush := @php_delphi_flush; - delphi_sapi_module.stat:= nil; - delphi_sapi_module.getenv:= nil; - delphi_sapi_module.sapi_error := @zend_error; - delphi_sapi_module.header_handler := @php_delphi_header_handler; - delphi_sapi_module.send_headers := nil; - delphi_sapi_module.send_header := @php_delphi_send_header; - delphi_sapi_module.read_post := @php_delphi_read_post; - delphi_sapi_module.read_cookies := @php_delphi_read_cookies; - delphi_sapi_module.register_server_variables := @php_delphi_register_variables; - delphi_sapi_module.log_message := @php_delphi_log_message; - if FIniPath <> '' then - delphi_sapi_module.php_ini_path_override := zend_pchar(FIniPath) - else - delphi_sapi_module.php_ini_path_override := nil; - delphi_sapi_module.block_interruptions := nil; - delphi_sapi_module.unblock_interruptions := nil; - delphi_sapi_module.default_post_reader := nil; - delphi_sapi_module.treat_data := nil; - delphi_sapi_module.executable_location := nil; - delphi_sapi_module.php_ini_ignore := 0; - - FLibraryModule.size := sizeOf(Tzend_module_entry); - FLibraryModule.zend_api := ZEND_MODULE_API_NO; - {$IFDEF PHP_DEBUG} - FLibraryModule.zend_debug := 1; - {$ELSE} - FLibraryModule.zend_debug := 0; - {$ENDIF} - FLibraryModule.zts := USING_ZTS; - FLibraryModule.name := 'php4delphi_internal'; - FLibraryModule.functions := nil; - FLibraryModule.module_startup_func := @minit; - FLibraryModule.module_shutdown_func := @mshutdown; - FLibraryModule.info_func := @php_info_library; - - FLibraryModule.request_shutdown_func := @rshutdown; - FLibraryModule.request_startup_func := @rinit; - - FLibraryModule.module_started := 0; - FLibraryModule._type := MODULE_PERSISTENT; - - FLibraryModule.Handle := nil; - FLibraryModule.module_number := 0; - FLibraryModule.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); -end; - -procedure TPHPEngine.RegisterConstants; -var - cnt : integer; - ConstantName : zend_ustr; - ConstantValue : zend_ustr; -begin - for cnt := 0 to FConstants.Count - 1 do - begin - ConstantName := FConstants[cnt].Name; - ConstantValue := FConstants[cnt].Value; - zend_register_string_constant(zend_pchar(ConstantName), - strlen(zend_pchar(ConstantName)) + 1, - zend_pchar(ConstantValue), CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); - end; - zend_register_bool_constant( zend_pchar('UTF8_SUPPORT'), 13, {$IFDEF PHP_UNICODE}TRUE{$ELSE}FALSE{$ENDIF}, - CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); - RegisterInternalConstants(TSRMLS_D); -end; - -procedure TPHPEngine.RegisterInternalConstants(TSRMLS_DC: pointer); -{$IFDEF REGISTER_COLORS} -var - i : integer; - ColorName : zend_ustr; -{$ENDIF} -begin - {$IFDEF REGISTER_COLORS} - for I := Low(Colors) to High(Colors) do - begin - ColorName := zend_ustr(Colors[i].Name); - zend_register_long_constant( zend_pchar(ColorName), strlen(zend_pchar(ColorName)) + 1, Colors[i].Value, - CONST_PERSISTENT or CONST_CS, 0, TSRMLS_DC); - end; - {$ENDIF} -end; - - -procedure TPHPEngine.SetConstants(Value: TPHPConstants); -begin - FConstants.Assign(Value); -end; - -procedure TPHPEngine.ShutdownEngine; -begin - - if PHPEngine <> Self then - raise EDelphiErrorEx.Create('Only active engine can be stopped'); - - - if not FEngineActive then - Exit; - - try - - if @delphi_sapi_module.shutdown <> nil then - delphi_sapi_module.shutdown(@delphi_sapi_module); - sapi_shutdown; - {Shutdown PHP thread safe resource manager} - if Assigned(FOnEngineShutdown) then - FOnEngineShutdown(Self); - {$IF not Defined(PHP550) and not Defined(PHP560)} - try - tsrm_shutdown(); - except - - end; - {$ENDIF} - FHash.Clear; - finally - FEngineActive := false; - FWaitForShutdown := False; - end; -end; - -procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); -var - cnt : integer; - skip : boolean; - FN : zend_ustr; -begin - skip := false; - ALib.Refresh; - - {No functions defined, skip this library} - if ALib.Functions.Count = 0 then - Exit; - - for cnt := 0 to ALib.Functions.Count - 1 do - begin - FN := - {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} - (ALib.Functions[cnt].FunctionName); - if FHash.IndexOf(FN) > -1 then - begin - skip := true; - break; - end; - end; - - if not skip then - begin - for cnt := 0 to ALib.Functions.Count - 1 do - begin - FN := {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} - (ALib.Functions[cnt].FunctionName); - FHash.AddObject(FN, ALib.Functions[cnt]); - end; - ALib.Locked := true; - end; -end; - -procedure TPHPEngine.StartupEngine; -var - i : integer; - x: Pzend_module_entry; -begin - if PHPEngine <> Self then - begin - raise EDelphiErrorEx.Create('Only one PHP engine can be activated'); - end; - - if FEngineActive then - raise EDelphiErrorEx.Create('PHP engine already active'); - - StartupPHP; - PrepareEngine; -// ini := GetExecutorGlobals.ini_directives; - - - - if not PHPLoaded then //Peter Enz - begin - raise EDelphiErrorEx.Create('PHP engine is not loaded'); - end; - - try - FHash.Clear; - - for i := 0 to Librarian.Count -1 do - begin - RegisterLibrary(Librarian.GetLibrary(I)); - end; - - - //Start PHP thread safe resource manager - tsrm_startup(128, 1, 0 , nil); - - sapi_startup(@delphi_sapi_module); - - RefreshLibrary; - - php_module_startup(@delphi_sapi_module, @FLibraryModule, 1); - - TSRMLS_D := ts_resource_ex(0, nil); - if Length(FAddMods) > 0 then - for x in FAddMods do - begin - zend_register_module_ex(x, TSRMLS_D); - zend_startup_module_ex(x, TSRMLS_D); - end; - - - PrepareIniEntry; - RegisterConstants; - - if Assigned(FOnEngineStartup) then - FOnEngineStartup(Self); - - FEngineActive := true; - except - FEngineActive := false; - end; -end; - -procedure TPHPEngine.StartupPHP; -var - DLLName : string; -begin - if not PHPLoaded then - begin - if FDLLFolder <> '' then - DLLName := IncludeTrailingBackSlash(FDLLFolder) + PHPWin - else - DLLName := PHPWin; - LoadPHP(DLLName); - if FReportDLLError then - begin - if PHPLib = 0 then raise Exception.CreateFmt('%s not found', [DllName]); - end; - end; -end; - -procedure TPHPEngine.LockEngine; -begin - EnterCriticalSection(FLock); -end; - -procedure TPHPEngine.UnlockEngine; -begin - LeaveCriticalSection(FLock); -end; - -procedure TPHPEngine.HandleError(Sender: TObject; AText: string; - AType: Integer; AFileName: string; ALineNo: integer); -begin - LockEngine; - try - if Assigned(FOnScriptError) then - - - FOnScriptError(Sender, AText, AType, AFileName, ALineNo); - //ShowMessage( AText + #10#13 + AType.ToString + #10#13 + AFileName + #10#13 + ALineNo.ToString ); - // FOnScriptError(Sender, AText, AType, AFileName, ALineNo); - finally - UnlockEngine; - end; -end; - -procedure TPHPEngine.HandleLogMessage(Sender: TObject; AText: string); -begin - LockEngine; - try - if Assigned(FOnLogMessage) then - FOnLogMessage(Sender, AText); - finally - UnlockEngine; - end; -end; - -procedure TPHPEngine.PrepareForShutdown; -begin - LockEngine; - try - FWaitForShutdown := true; - finally - UnlockEngine; - end; -end; - -procedure TPHPEngine.ShutdownAndWaitFor; -var - cnt : integer; - AllClear : boolean; -begin - PrepareForShutdown; - - AllClear := false; - while not AllClear do - begin - cnt := FRequestCount; - if cnt <= 0 then - AllClear := true - else - Sleep(250); - end; - ShutdownEngine; -end; - -function TPHPEngine.GetEngineActive: boolean; -begin - Result := FEngineActive; -end; - -procedure TPHPEngine.UnlockLibraries; -var - cnt : integer; -begin - if Assigned(Librarian) then - begin - for cnt := 0 to Librarian.Count - 1 do - Librarian.GetLibrary(cnt).Locked := false; - end; -end; - -procedure TPHPEngine.RemoveRequest; +end; +} +procedure TPHPEngine.HandleRequest(ht: integer; return_value: pzval; + return_value_ptr: ppzval; this_ptr: pzval; return_value_used: integer; + TSRMLS_DC: pointer); + +var + Params : pzval_array; + AFunction : TPHPFunction; + j : integer; + FActiveFunctionName : string; + FunctionIndex : integer; + FZendVar : TZendVariable; + FParameters : TFunctionParams; + ReturnValue : variant; +begin + FParameters := TFunctionParams.Create(nil, TFunctionParam); + + if ht > 0 then + begin + if ( not (zend_get_parameters_my(ht, Params, TSRMLS_DC) = SUCCESS )) then + begin + zend_wrong_param_count(TSRMLS_DC); + Exit; + end; + end; + + FActiveFunctionName := get_active_function_name(TSRMLS_DC); + if FHash.Find(FActiveFunctionName, FunctionIndex) then + AFunction := TPHPFunction(FHash.Objects[FunctionIndex]) + else + AFunction := nil; + + if Assigned(AFunction) then + begin + if AFunction.Collection = nil then + Exit; {library was destroyed} + + if Assigned(AFunction.OnExecute) then + begin + if AFunction.Parameters.Count <> ht then + begin + zend_wrong_param_count(TSRMLS_DC); + Exit; + end; + + FParameters.Assign(AFunction.Parameters); + if ht > 0 then + begin + for j := 0 to ht - 1 do + begin + if not IsParamTypeCorrect(FParameters[j].ParamType, Params[j]^) then + begin + zend_error(E_WARNING, zend_pchar( + {$IFDEF PHP_UNICODE}Format{$ELSE}AnsiFormat{$ENDIF} + ('Wrong parameter type for %s()', [FActiveFunctionName]))); + Exit; + end; + FParameters[j].ZendValue := (Params[j]^); + end; + end; { if ht > 0} + //log(FActiveFunctionName); + FZendVar := TZendVariable.Create; + FZendVar.AsZendVariable := return_value; + AFunction.OnExecute(Self, FParameters, ReturnValue, FZendVar, TSRMLS_DC); + if Assigned(FZendVar) then + begin + if FZendVar.ISNull then {perform variant conversion} + VariantToZend(ReturnValue, return_value); + FZendVar.Free; + end + else + VariantToZend(ReturnValue, return_value); + end; {if assigned AFunction.OnExecute} + end; + FParameters.Free; + dispose_pzval_array(Params); +end; + +procedure TPHPEngine.PrepareIniEntry; +var + p, p2 : pointer; + TimeStr : string; +begin + if not PHPLoaded then + Exit; + + if FHandleErrors then + begin + HFunc(@delphi_error_cb, 'zend_error_cb'); + end; + {$IFNDEF PHP540} + if FSafeMode then + zend_alter_ini_entry('safe_mode', 10, '1', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP) + else + {$ENDIF} + zend_alter_ini_entry('safe_mode', 10, '0', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP); + {$IFNDEF PHP540} + if FSafeModeGID then + zend_alter_ini_entry('safe_mode_gid', 14, '1', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP) + else + {$ENDIF} + zend_alter_ini_entry('safe_mode_gid', 14, '0', 1, PHP_INI_SYSTEM, PHP_INI_STAGE_STARTUP); + + zend_alter_ini_entry('register_argc_argv', 19, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); + + if FRegisterGlobals then + zend_alter_ini_entry('register_globals', 17, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE) + else + zend_alter_ini_entry('register_globals', 17, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); + + if FHTMLErrors then + zend_alter_ini_entry('html_errors', 12, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE) + else + zend_alter_ini_entry('html_errors', 12, '0', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); + + zend_alter_ini_entry('implicit_flush', 15, '1', 1, ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); + TimeStr := IntToStr(FMaxInputTime); + zend_alter_ini_entry('max_input_time', 15, zend_pchar(TimeStr), Length(TimeStr), ZEND_INI_SYSTEM, ZEND_INI_STAGE_ACTIVATE); +end; + +procedure TPHPEngine.PrepareEngine; +begin + delphi_sapi_module.name := 'embed'; {to solve a problem with dl()} + delphi_sapi_module.pretty_name := 'PHP for Delphi'; + delphi_sapi_module.startup := php_delphi_startup; + delphi_sapi_module.shutdown := nil; //php_module_shutdown_wrapper; + delphi_sapi_module.activate:= nil; + delphi_sapi_module.deactivate := @php_delphi_deactivate; + delphi_sapi_module.ub_write := @php_delphi_ub_write; + delphi_sapi_module.flush := @php_delphi_flush; + delphi_sapi_module.stat:= nil; + delphi_sapi_module.getenv:= nil; + delphi_sapi_module.sapi_error := @zend_error; + delphi_sapi_module.header_handler := @php_delphi_header_handler; + delphi_sapi_module.send_headers := nil; + delphi_sapi_module.send_header := @php_delphi_send_header; + delphi_sapi_module.read_post := @php_delphi_read_post; + delphi_sapi_module.read_cookies := @php_delphi_read_cookies; + delphi_sapi_module.register_server_variables := @php_delphi_register_variables; + delphi_sapi_module.log_message := @php_delphi_log_message; + if FIniPath <> '' then + delphi_sapi_module.php_ini_path_override := zend_pchar(FIniPath) + else + delphi_sapi_module.php_ini_path_override := nil; + delphi_sapi_module.block_interruptions := nil; + delphi_sapi_module.unblock_interruptions := nil; + delphi_sapi_module.default_post_reader := nil; + delphi_sapi_module.treat_data := nil; + delphi_sapi_module.executable_location := nil; + delphi_sapi_module.php_ini_ignore := 0; + + FLibraryModule.size := sizeOf(Tzend_module_entry); + FLibraryModule.zend_api := ZEND_MODULE_API_NO; + {$IFDEF PHP_DEBUG} + FLibraryModule.zend_debug := 1; + {$ELSE} + FLibraryModule.zend_debug := 0; + {$ENDIF} + FLibraryModule.zts := USING_ZTS; + FLibraryModule.name := 'php4delphi_internal'; + FLibraryModule.functions := nil; + FLibraryModule.module_startup_func := @minit; + FLibraryModule.module_shutdown_func := @mshutdown; + FLibraryModule.info_func := @php_info_library; + + FLibraryModule.request_shutdown_func := @rshutdown; + FLibraryModule.request_startup_func := @rinit; + + FLibraryModule.module_started := 0; + FLibraryModule._type := MODULE_PERSISTENT; + + FLibraryModule.Handle := nil; + FLibraryModule.module_number := 0; + FLibraryModule.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); +end; + +procedure TPHPEngine.RegisterConstants; +var + cnt : integer; + ConstantName : zend_ustr; + ConstantValue : zend_ustr; +begin + for cnt := 0 to FConstants.Count - 1 do + begin + ConstantName := FConstants[cnt].Name; + ConstantValue := FConstants[cnt].Value; + zend_register_string_constant(zend_pchar(ConstantName), + strlen(zend_pchar(ConstantName)) + 1, + zend_pchar(ConstantValue), CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); + end; + zend_register_bool_constant( zend_pchar('UTF8_SUPPORT'), 13, {$IFDEF PHP_UNICODE}TRUE{$ELSE}FALSE{$ENDIF}, + CONST_PERSISTENT or CONST_CS, 0, TSRMLS_D); + RegisterInternalConstants(TSRMLS_D); +end; + +procedure TPHPEngine.RegisterInternalConstants(TSRMLS_DC: pointer); +{$IFDEF REGISTER_COLOURS} var - x: Pzend_module_entry; - xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; -begin - InterlockedDecrement(FRequestCount); - if Length(FAddMods) > 0 then - for x in FAddMods do - begin - xp := x^.request_shutdown_func; + i : integer; + ColorName : zend_ustr; +{$ENDIF} +begin + {$IFDEF REGISTER_COLOURS} + for I := Low(Colors) to High(Colors) do + begin + ColorName := zend_ustr(Colors[i].Name); + zend_register_long_constant( zend_pchar(ColorName), strlen(zend_pchar(ColorName)) + 1, Colors[i].Value, + CONST_PERSISTENT or CONST_CS, 0, TSRMLS_DC); + end; + {$ENDIF} +end; + + +procedure TPHPEngine.SetConstants(Value: TPHPConstants); +begin + FConstants.Assign(Value); +end; + +procedure TPHPEngine.ShutdownEngine; +begin + + if PHPEngine <> Self then + raise EDelphiErrorEx.Create('Only active engine can be stopped'); + + + if not FEngineActive then + Exit; + + try + + if @delphi_sapi_module.shutdown <> nil then + delphi_sapi_module.shutdown(@delphi_sapi_module); + sapi_shutdown; + {Shutdown PHP thread safe resource manager} + if Assigned(FOnEngineShutdown) then + FOnEngineShutdown(Self); + {$IF not Defined(PHP550) and not Defined(PHP560)} + try + tsrm_shutdown(); + except + + end; + {$ENDIF} + FHash.Clear; + finally + FEngineActive := false; + FWaitForShutdown := False; + end; +end; + +procedure TPHPEngine.RegisterLibrary(ALib : TCustomPHPLibrary); +var + cnt : integer; + skip : boolean; + FN : zend_ustr; +begin + skip := false; + ALib.Refresh; + + {No functions defined, skip this library} + if ALib.Functions.Count = 0 then + Exit; + + for cnt := 0 to ALib.Functions.Count - 1 do + begin + FN := + {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + (ALib.Functions[cnt].FunctionName); + if FHash.IndexOf(FN) > -1 then + begin + skip := true; + break; + end; + end; + + if not skip then + begin + for cnt := 0 to ALib.Functions.Count - 1 do + begin + FN := {$IFDEF PHP_UNICODE}UTF8LowerCase{$ELSE}AnsiLowerCase{$ENDIF} + (ALib.Functions[cnt].FunctionName); + FHash.AddObject(FN, ALib.Functions[cnt]); + end; + ALib.Locked := true; + end; +end; + +procedure TPHPEngine.StartupEngine; +var + i : integer; + x: Pzend_module_entry; +begin + if PHPEngine <> Self then + begin + raise EDelphiErrorEx.Create('Only one PHP engine can be activated'); + end; + + if FEngineActive then + raise EDelphiErrorEx.Create('PHP engine already active'); + + StartupPHP; + PrepareEngine; +// ini := GetExecutorGlobals.ini_directives; + + + + if not PHPLoaded then //Peter Enz + begin + raise EDelphiErrorEx.Create('PHP engine is not loaded'); + end; + + try + FHash.Clear; + + for i := 0 to Librarian.Count -1 do + begin + RegisterLibrary(Librarian.GetLibrary(I)); + end; + + + //Start PHP thread safe resource manager + tsrm_startup(128, 1, 0 , nil); + + sapi_startup(@delphi_sapi_module); + + RefreshLibrary; + + php_module_startup(@delphi_sapi_module, @FLibraryModule, 1); + + TSRMLS_D := ts_resource_ex(0, nil); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + zend_register_module_ex(x, TSRMLS_D); + zend_startup_module_ex(x, TSRMLS_D); + end; + + + PrepareIniEntry; + RegisterConstants; + + if Assigned(FOnEngineStartup) then + FOnEngineStartup(Self); + + FEngineActive := true; + except + FEngineActive := false; + end; +end; + +procedure TPHPEngine.StartupPHP; +var + DLLName : string; +begin + if not PHPLoaded then + begin + if FDLLFolder <> '' then + DLLName := IncludeTrailingBackSlash(FDLLFolder) + PHPWin + else + DLLName := PHPWin; + LoadPHP(DLLName); + if FReportDLLError then + begin + if PHPLib = 0 then raise Exception.CreateFmt('%s not found', [DllName]); + end; + end; +end; + +procedure TPHPEngine.LockEngine; +begin + EnterCriticalSection(FLock); +end; + +procedure TPHPEngine.UnlockEngine; +begin + LeaveCriticalSection(FLock); +end; + +procedure TPHPEngine.HandleError(Sender: TObject; AText: string; + AType: Integer; AFileName: string; ALineNo: integer); +begin + LockEngine; + try + if Assigned(FOnScriptError) then + + + FOnScriptError(Sender, AText, AType, AFileName, ALineNo); + //ShowMessage( AText + #10#13 + AType.ToString + #10#13 + AFileName + #10#13 + ALineNo.ToString ); + // FOnScriptError(Sender, AText, AType, AFileName, ALineNo); + finally + UnlockEngine; + end; +end; + +procedure TPHPEngine.HandleLogMessage(Sender: TObject; AText: string); +begin + LockEngine; + try + if Assigned(FOnLogMessage) then + FOnLogMessage(Sender, AText); + finally + UnlockEngine; + end; +end; + +procedure TPHPEngine.PrepareForShutdown; +begin + LockEngine; + try + FWaitForShutdown := true; + finally + UnlockEngine; + end; +end; + +procedure TPHPEngine.ShutdownAndWaitFor; +var + cnt : integer; + AllClear : boolean; +begin + PrepareForShutdown; + + AllClear := false; + while not AllClear do + begin + cnt := FRequestCount; + if cnt <= 0 then + AllClear := true + else + Sleep(250); + end; + ShutdownEngine; +end; + +function TPHPEngine.GetEngineActive: boolean; +begin + Result := FEngineActive; +end; + +procedure TPHPEngine.UnlockLibraries; +var + cnt : integer; +begin + if Assigned(Librarian) then + begin + for cnt := 0 to Librarian.Count - 1 do + Librarian.GetLibrary(cnt).Locked := false; + end; +end; + +procedure TPHPEngine.RemoveRequest; +var + x: Pzend_module_entry; + xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; +begin + InterlockedDecrement(FRequestCount); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + xp := x^.request_shutdown_func; if(Assigned(xp)) then - xp(x^._type, x^.module_number, TSRMLS_D); - end; -end; - -procedure TPHPEngine.AddFunction(FN: zend_pchar; Func: Pointer); -begin + xp(x^._type, x^.module_number, TSRMLS_D); + end; +end; + +procedure TPHPEngine.AddFunction(FN: zend_pchar; Func: Pointer); +begin inc(RegNumFunc); SetLength(FLibraryEntryTable, RegNumFunc + 1); FLibraryEntryTable[RegNumFunc - 1].fname := FN; //FLibraryEntryTable[RegNumFunc - 1].num_args := 0; FLibraryEntryTable[RegNumFunc - 1].arg_info := nil; - FLibraryEntryTable[RegNumFunc - 1].handler := Func; -end; - -procedure TPHPEngine.AddModule(Module_entry: Pzend_module_entry); -begin + FLibraryEntryTable[RegNumFunc - 1].handler := Func; +end; + +procedure TPHPEngine.AddModule(Module_entry: Pzend_module_entry); +begin SetLength(FAddMods, Length(FAddMods)+1); FAddMods[High(FAddMods)] := Module_entry; -end; - -procedure TPHPEngine.RefreshLibrary; -var i: integer; -begin +end; + +procedure TPHPEngine.RefreshLibrary; +var i: integer; +begin Self.AddFunction('delphi_date', @delphi_date); Self.AddFunction('delphi_get_author', @delphi_get_author); Self.AddFunction('delphi_str_date', @delphi_str_date); Self.AddFunction('InputBox', @delphi_input_box); - for i := 0 to FHash.Count - 1 do + for i := 0 to FHash.Count - 1 do Self.AddFunction(zend_pchar(zend_ustr(FHash[i])), @DispatchRequest); FLibraryModule.functions := @FLibraryEntryTable[0]; -end; - -procedure TPHPEngine.AddRequest; +end; + +procedure TPHPEngine.AddRequest; var - x: Pzend_module_entry; - xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; -begin - InterlockedIncrement(FRequestCount); - if Length(FAddMods) > 0 then - for x in FAddMods do - begin - xp := x^.request_startup_func; + x: Pzend_module_entry; + xp: function(_type : integer; module_number : integer; TSRMLS_DC : pointer):integer;cdecl; +begin + InterlockedIncrement(FRequestCount); + if Length(FAddMods) > 0 then + for x in FAddMods do + begin + xp := x^.request_startup_func; if(Assigned(xp)) then - xp(x^._type, x^.module_number, TSRMLS_D); - end; -end; - -initialization - InitLibrarian; - -finalization - UnInitLibrarian; - -end. + xp(x^._type, x^.module_number, TSRMLS_D); + end; +end; + +initialization + InitLibrarian; + +finalization + UnInitLibrarian; + +end. From 67658bd28e6567a7a152c0f7aaa2f19663465485 Mon Sep 17 00:00:00 2001 From: lion Date: Sat, 18 Jul 2020 18:05:41 +0300 Subject: [PATCH 29/35] returned D2010 support --- .gitignore | 3 +- Source/AutomaticConversion.log | 1 - Source/DelphiFunctions.pas | 4 +- .../Delphi Class 2/delphi_class2.dpr | 24 +- .../Extensions/css/css.dpr | 4 +- .../Extensions/php class/php_class.dpr | 16 -- .../Extensions/skeleton/skeleton.dpr | 3 - .../psvPHP/Components/Unit1.pas | 13 - .../psvPHP/sample1/frm_phpDemo.pas | 5 - Source/Demos/Bonus/JpegConverter/php_jpeg.dpr | 3 - Source/Demos/Bonus/PHPEncoder/phpencoder.dpr | 3 - .../Demos/Bonus/phpRegistry/php_registry.dpr | 38 +-- .../Delphi Class 2/delphi_class2.dpr | 27 +- Source/Demos/Extensions/css/css.dpr | 4 +- .../Demos/Extensions/php class/php_class.dpr | 18 +- Source/Demos/Extensions/skeleton/skeleton.dpr | 3 - Source/Demos/psvPHP/Components/Unit1.pas | 13 - Source/Demos/psvPHP/console/phpcon.dpr | 2 +- Source/Demos/psvPHP/sample1/Unit1.pas | 5 - Source/Demos/psvPHP/sample1/frm_phpDemo.pas | 5 - Source/PHP.INC | 54 +++- Source/PHP4DelphiD2006.dpk | 6 +- Source/PHP4DelphiD2006.dproj.local | 2 - Source/PHP4DelphiD2006.stat | 10 - Source/PHPAPI.pas | 69 +++-- Source/PHPCommon.pas | 42 ++- Source/ZENDAPI.pas | 215 ++++++++++----- Source/ZendTypes.pas | 85 +++--- ...p4delphi Delphi 10 Seattle.groupproj.local | 12 - ...4delphi Delphi 10.1 Berlin.groupproj.local | 11 - ...p4delphi Delphi 10.2 Tokyo.groupproj.local | 13 - .../php4delphi Delphi 2010.groupproj.local | 23 -- .../php4delphi Delphi 2011.groupproj.local | 22 -- Source/packages/php4delphi Delphi 5.bpg | 23 ++ Source/packages/php4delphi Delphi 7.bpg | 23 ++ .../php4delphi Delphi XE1.groupproj.local | 14 - .../php4delphi Delphi XE2.groupproj.local | 15 -- .../php4delphi Delphi XE3.groupproj.local | 16 -- .../php4delphi Delphi XE4.groupproj.local | 17 -- .../php4delphi Delphi XE5.groupproj.local | 18 -- .../php4delphi Delphi XE6.groupproj.local | 19 -- .../php4delphi Delphi XE7.groupproj.local | 20 -- .../php4delphi Delphi XE8.groupproj.local | 21 -- Source/php4App.dproj.local | 2 - Source/php4App.identcache | Bin 47 -> 0 bytes Source/php4App.stat | 10 - Source/php4AppUnit.pas | 6 +- Source/php4Applications/PHP 4.4.6/php4App.dll | Bin 130560 -> 0 bytes .../php4Applications/PHP 5.2.11/php4App.dll | Bin 134656 -> 0 bytes Source/php4Applications/PHP 5.3.0/php4App.dll | Bin 135168 -> 0 bytes Source/php4Applications/PHP4/php4App.dll | Bin 49152 -> 0 bytes Source/php4Applications/PHP511/php4App.dll | Bin 119808 -> 0 bytes Source/php4Applications/PHP512/php4App.dll | Bin 37888 -> 0 bytes Source/php4DelphiD2005.dpk | 6 +- Source/php4DelphiD2005.dproj.local | 2 - Source/php4DelphiD2005.stat | 10 - Source/php4DelphiD2007.dpk | 6 +- Source/php4DelphiD2007.dproj.local | 2 - Source/php4DelphiD2007.stat | 10 - Source/php4DelphiD2009.dpk | 15 +- Source/php4DelphiD2009.dproj | 254 +++++++++--------- Source/php4DelphiD2009.dproj.local | 2 - Source/php4DelphiD2009.stat | 10 - Source/php4DelphiD2010.dpk | 18 +- Source/php4DelphiD2010.dproj.local | 6 - Source/php4DelphiD2010.identcache | Bin 1204 -> 0 bytes Source/php4DelphiD2010.stat | 10 - Source/php4DelphiD5.dproj.local | 2 - Source/php4DelphiD5.stat | 10 - Source/php4DelphiD6.dpk | 7 +- Source/php4DelphiD6.dproj.local | 2 - Source/php4DelphiD6.stat | 10 - Source/php4DelphiD7.cfg | 40 +++ Source/php4DelphiD7.dof | 136 ++++++++++ Source/php4DelphiD7.dproj.local | 2 - Source/php4DelphiD7.stat | 10 - Source/php4DelphiR2005.dpk | 8 +- Source/php4DelphiR2005.dproj.local | 2 - Source/php4DelphiR2005.stat | 10 - Source/php4DelphiR2006.dpk | 7 +- Source/php4DelphiR2006.dproj.local | 2 - Source/php4DelphiR2006.stat | 10 - Source/php4DelphiR2007.dpk | 7 +- Source/php4DelphiR2007.dproj.local | 2 - Source/php4DelphiR2007.stat | 10 - Source/php4DelphiR2009.dpk | 16 +- Source/php4DelphiR2009.dproj | 249 +++++++++-------- Source/php4DelphiR2009.dproj.local | 2 - Source/php4DelphiR2009.res | Bin 4396 -> 5056 bytes Source/php4DelphiR2009.stat | 10 - Source/php4DelphiR2010.dproj.local | 6 - Source/php4DelphiR2010.identcache | Bin 823 -> 0 bytes Source/php4DelphiR2010.stat | 10 - Source/php4DelphiR5.dpk | 5 +- Source/php4DelphiR5.dproj.local | 2 - Source/php4DelphiR5.identcache | Bin 556 -> 0 bytes Source/php4DelphiR5.stat | 10 - Source/php4DelphiR6.dpk | 11 +- Source/php4DelphiR6.dproj.local | 2 - Source/php4DelphiR6.stat | 10 - Source/php4DelphiR7.cfg | 40 +++ Source/php4DelphiR7.dof | 136 ++++++++++ Source/php4DelphiR7.dpk | 1 - Source/php4DelphiR7.dproj.local | 2 - Source/php4DelphiR7.identcache | Bin 856 -> 0 bytes Source/php4DelphiR7.stat | 10 - Source/php4delphi.pas | 59 +++- Source/phpClass.pas | 20 ++ Source/phpModules.pas | 26 +- php4Delphi.pdf | Bin 221817 -> 0 bytes 110 files changed, 1125 insertions(+), 1092 deletions(-) delete mode 100644 Source/AutomaticConversion.log delete mode 100644 Source/PHP4DelphiD2006.dproj.local delete mode 100644 Source/PHP4DelphiD2006.stat delete mode 100644 Source/packages/php4delphi Delphi 10 Seattle.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi 10.2 Tokyo.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi 2010.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi 2011.groupproj.local create mode 100644 Source/packages/php4delphi Delphi 5.bpg create mode 100644 Source/packages/php4delphi Delphi 7.bpg delete mode 100644 Source/packages/php4delphi Delphi XE1.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE2.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE3.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE4.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE5.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE6.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE7.groupproj.local delete mode 100644 Source/packages/php4delphi Delphi XE8.groupproj.local delete mode 100644 Source/php4App.dproj.local delete mode 100644 Source/php4App.identcache delete mode 100644 Source/php4App.stat delete mode 100644 Source/php4Applications/PHP 4.4.6/php4App.dll delete mode 100644 Source/php4Applications/PHP 5.2.11/php4App.dll delete mode 100644 Source/php4Applications/PHP 5.3.0/php4App.dll delete mode 100644 Source/php4Applications/PHP4/php4App.dll delete mode 100644 Source/php4Applications/PHP511/php4App.dll delete mode 100644 Source/php4Applications/PHP512/php4App.dll delete mode 100644 Source/php4DelphiD2005.dproj.local delete mode 100644 Source/php4DelphiD2005.stat delete mode 100644 Source/php4DelphiD2007.dproj.local delete mode 100644 Source/php4DelphiD2007.stat delete mode 100644 Source/php4DelphiD2009.dproj.local delete mode 100644 Source/php4DelphiD2009.stat delete mode 100644 Source/php4DelphiD2010.dproj.local delete mode 100644 Source/php4DelphiD2010.identcache delete mode 100644 Source/php4DelphiD2010.stat delete mode 100644 Source/php4DelphiD5.dproj.local delete mode 100644 Source/php4DelphiD5.stat delete mode 100644 Source/php4DelphiD6.dproj.local delete mode 100644 Source/php4DelphiD6.stat create mode 100644 Source/php4DelphiD7.cfg create mode 100644 Source/php4DelphiD7.dof delete mode 100644 Source/php4DelphiD7.dproj.local delete mode 100644 Source/php4DelphiD7.stat delete mode 100644 Source/php4DelphiR2005.dproj.local delete mode 100644 Source/php4DelphiR2005.stat delete mode 100644 Source/php4DelphiR2006.dproj.local delete mode 100644 Source/php4DelphiR2006.stat delete mode 100644 Source/php4DelphiR2007.dproj.local delete mode 100644 Source/php4DelphiR2007.stat delete mode 100644 Source/php4DelphiR2009.dproj.local delete mode 100644 Source/php4DelphiR2009.stat delete mode 100644 Source/php4DelphiR2010.dproj.local delete mode 100644 Source/php4DelphiR2010.identcache delete mode 100644 Source/php4DelphiR2010.stat delete mode 100644 Source/php4DelphiR5.dproj.local delete mode 100644 Source/php4DelphiR5.identcache delete mode 100644 Source/php4DelphiR5.stat delete mode 100644 Source/php4DelphiR6.dproj.local delete mode 100644 Source/php4DelphiR6.stat create mode 100644 Source/php4DelphiR7.cfg create mode 100644 Source/php4DelphiR7.dof delete mode 100644 Source/php4DelphiR7.dproj.local delete mode 100644 Source/php4DelphiR7.identcache delete mode 100644 Source/php4DelphiR7.stat delete mode 100644 php4Delphi.pdf diff --git a/.gitignore b/.gitignore index 294f54a..1d9c846 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ __history/ - __recovery/ *.dcu *.local @@ -7,3 +6,5 @@ __recovery/ *.identcache *.stat *.res +*.~pas +*.~dcu \ No newline at end of file diff --git a/Source/AutomaticConversion.log b/Source/AutomaticConversion.log deleted file mode 100644 index e660758..0000000 --- a/Source/AutomaticConversion.log +++ /dev/null @@ -1 +0,0 @@ - Fatal: Перетворення перервано. diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 74bbcc3..11163b2 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -17,9 +17,7 @@ interface uses SysUtils, Classes, - VCL.Controls, - ZendTypes, ZendAPI, PHPTypes, PHPAPI, VCL.Dialogs, typinfo, - VCL.Forms, VCL.stdctrls; + ZendTypes, ZendAPI, PHPTypes, PHPAPI, typinfo; {$ifdef fpc} {$mode delphi} diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr index 1035333..9879358 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/Delphi Class 2/delphi_class2.dpr @@ -59,43 +59,24 @@ begin DelphiTable[4].fname := 'delphi_extract_file_ext'; DelphiTable[4].handler := @delphi_extract_file_ext; - {$IFDEF PHP4} - DelphiTable[4].func_arg_types := nil; - {$ELSE} DelphiTable[4].arg_info := nil; - {$ENDIF} DelphiTable[5].fname := 'delphi_show_message'; DelphiTable[5].handler := @delphi_show_message; - {$IFDEF PHP4} - DelphiTable[5].func_arg_types := nil; - {$ELSE} DelphiTable[5].arg_info := nil; - {$ENDIF} DelphiTable[6].fname := 'register_delphi_object'; delphitable[6].handler := @register_delphi_object; - {$IFDEF PHP4} - DelphiTable[6].func_arg_types := nil; - {$ELSE} DelphiTable[6].arg_info := nil; - {$ENDIF} DelphiTable[7].fname := 'delphi_get_author'; DelphiTable[7].handler := @delphi_get_author; - {$IFDEF PHP4} - DelphiTable[7].func_arg_types := nil; - {$ELSE} DelphiTable[7].arg_info := nil; - {$ENDIF} + DelphiTable[8].fname := 'delphi_str_date'; DelphiTable[8].handler := @delphi_str_date; - {$IFDEF PHP4} - DelphiTable[8].func_arg_types := nil; - {$ELSE} DelphiTable[8].arg_info := nil; - {$ENDIF} PHP_FUNCTION(DelphiTable[9], 'delphi_get_system_directory', @delphi_get_system_directory); @@ -122,9 +103,6 @@ begin ModuleEntry.request_startup_func := @rinit; ModuleEntry.request_shutdown_func := @rshutdown; ModuleEntry.info_func := @php_info_module; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @DelphiTable[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/css/css.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/css/css.dpr index 209efd7..52aae8e 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/css/css.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/css/css.dpr @@ -114,9 +114,7 @@ begin ModuleEntry.info_func := @php_info_module; module_entry_table[0].fname := 'delphi_css'; module_entry_table[0].handler := @delphi_css; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} + ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/php class/php_class.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/php class/php_class.dpr index 1fbe696..fe9c521 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/php class/php_class.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/php class/php_class.dpr @@ -100,25 +100,12 @@ begin properties[0] := 'name'; properties[1] := 'tool'; properties[2] := 'height'; - {$IFDEF PHP4} - _object_init_ex(return_value, ce, nil, 0, TSRMLS_DC ); - {$ELSE} object_init(return_value, ce, TSRMLS_DC ); - {$ENDIF} - {$IFDEF PHP4} - add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1); - add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Delphi', 1); - {$ELSE} add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1, TSRMLS_DC); add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Delphi', 1, TSRMLS_DC); - {$ENDIF} - {$IFDEF PHP4} - add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185); - {$ELSE} add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185, TSRMLS_DC); - {$ENDIF} end; @@ -143,9 +130,6 @@ begin ModuleEntry.info_func := @php_info_module; module_entry_table[0].fname := 'get_demo_class'; module_entry_table[0].handler := @get_demo_class; - {$IFDEF PHP4} - module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr b/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr index db76d9f..a2c7c38 100644 --- a/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/Extensions/skeleton/skeleton.dpr @@ -102,9 +102,6 @@ begin ModuleEntry.info_func := @php_info_module; Module_entry_table[0].fname := 'confirm_extname_compiled'; Module_entry_table[0].handler := @confirm_extname_compiled; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Components/Unit1.pas b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Components/Unit1.pas index d0afb70..5a9e4e9 100644 --- a/Source/Demos Delphi 2009 (WideString support)/psvPHP/Components/Unit1.pas +++ b/Source/Demos Delphi 2009 (WideString support)/psvPHP/Components/Unit1.pas @@ -86,18 +86,6 @@ procedure TfrmTest.FormCreate(Sender: TObject); memScript.Lines.Clear; with memScript.Lines do begin - {$IFDEF PHP4} - Add('$btnClose = register_delphi_component("btnClose");'); - Add('$frmTest = register_delphi_component("frmTest");'); - Add('$btnClose->Caption = "&Exit";'); - Add('$frmTest->Caption = "PHP4Delphi demo";'); - Add('$btnClose->Top = 150;'); - Add('$btnClose->Font->Size = 10;'); - Add('$btnClose->Cursor = -21;'); - Add('$frmTest->Color = clGreen;'); - Add('$st = delphi_input_box("InputBox", "Type your message", "Done");'); - Add('delphi_show_message($st);'); - {$ELSE} Add('$btnClose = register_delphi_component("btnClose");'); Add('$frmTest = register_delphi_component("frmTest");'); Add('$btnClose->Caption = "&Exit";'); @@ -108,7 +96,6 @@ procedure TfrmTest.FormCreate(Sender: TObject); Add('$frmTest->Color = clGreen;'); Add('$st = delphi_input_box("InputBox", "Type your message", "Done");'); Add('delphi_show_message($st);'); - {$ENDIF} end; PHPEngine.StartupEngine; end; diff --git a/Source/Demos Delphi 2009 (WideString support)/psvPHP/sample1/frm_phpDemo.pas b/Source/Demos Delphi 2009 (WideString support)/psvPHP/sample1/frm_phpDemo.pas index 6cff647..38f0f7f 100644 --- a/Source/Demos Delphi 2009 (WideString support)/psvPHP/sample1/frm_phpDemo.pas +++ b/Source/Demos Delphi 2009 (WideString support)/psvPHP/sample1/frm_phpDemo.pas @@ -118,13 +118,8 @@ procedure TfrmPHPDemo.DisplayResultInBrowser(AStr: AnsiString); AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ParamStr(0)+'/php"', [rfReplaceAll, rfIgnoreCase]); - {$IFDEF PHP4} - AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', - 'src="/service/res://'+ ParamStr(0) + '/zend1"', [rfReplaceAll, rfIgnoreCase]); - {$ELSE} AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ ParamStr(0) + '/zend2"', [rfReplaceAll, rfIgnoreCase]); - {$ENDIF} Stream := StringToOleStream(AStr); StreamInit := Webbrowser1.Document as IPersistStreamInit; diff --git a/Source/Demos/Bonus/JpegConverter/php_jpeg.dpr b/Source/Demos/Bonus/JpegConverter/php_jpeg.dpr index 2ef4892..4ab728d 100644 --- a/Source/Demos/Bonus/JpegConverter/php_jpeg.dpr +++ b/Source/Demos/Bonus/JpegConverter/php_jpeg.dpr @@ -266,9 +266,6 @@ begin Module_entry_table[2].fname := 'sign_jpeg'; Module_entry_table[2].handler := @sign_jpeg; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; diff --git a/Source/Demos/Bonus/PHPEncoder/phpencoder.dpr b/Source/Demos/Bonus/PHPEncoder/phpencoder.dpr index 0f03996..93396ad 100644 --- a/Source/Demos/Bonus/PHPEncoder/phpencoder.dpr +++ b/Source/Demos/Bonus/PHPEncoder/phpencoder.dpr @@ -85,9 +85,6 @@ begin Module_entry_table[0].fname := 'ex_dec'; Module_entry_table[0].handler := @ex_dec; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos/Bonus/phpRegistry/php_registry.dpr b/Source/Demos/Bonus/phpRegistry/php_registry.dpr index ef0bd03..39319e2 100644 --- a/Source/Demos/Bonus/phpRegistry/php_registry.dpr +++ b/Source/Demos/Bonus/phpRegistry/php_registry.dpr @@ -562,75 +562,39 @@ begin module_entry_table[0].fname := 'regcreatekey'; module_entry_table[0].handler := @php_regcreatekey; - {$IFDEF PHP4} - module_entry_table[0].func_arg_types := nil; - {$ENDIF} module_entry_table[1].fname := 'regdeleteentry'; module_entry_table[1].handler := @php_regdeleteentry; - {$IFDEF PHP4} - module_entry_table[1].func_arg_types := nil; - {$ENDIF} module_entry_table[2].fname := 'regdeletekeytree'; - module_entry_table[2].handler := @php_regdeletekeytree; - {$IFDEF PHP4} - module_entry_table[2].func_arg_types := nil; - {$ENDIF} + module_entry_table[2].handler := p_regdeletekeytree; module_entry_table[3].fname := 'reghassubkeys'; module_entry_table[3].handler := @php_reghassubkeys; - {$IFDEF PHP4} - module_entry_table[3].func_arg_types := nil; - {$ENDIF} module_entry_table[4].fname := 'regkeyexists'; module_entry_table[4].handler := @php_regkeyexists; - {$IFDEF PHP4} - module_entry_table[4].func_arg_types := nil; - {$ENDIF} module_entry_table[5].fname := 'regreadbool'; module_entry_table[5].handler := @php_regreadbool; - {$IFDEF PHP4} - module_entry_table[5].func_arg_types := nil; - {$ENDIF} module_entry_table[6].fname := 'regreadinteger'; module_entry_table[6].handler := @php_regreadinteger; - {$IFDEF PHP4} - module_entry_table[6].func_arg_types := nil; - {$ENDIF} module_entry_table[7].fname := 'regreadstring'; module_entry_table[7].handler := @php_regreadstring; - {$IFDEF PHP4} - module_entry_table[7].func_arg_types := nil; - {$ENDIF} module_entry_table[8].fname := 'regwritebool'; module_entry_table[8].handler := @php_regwritebool; - {$IFDEF PHP4} - module_entry_table[8].func_arg_types := nil; - {$ENDIF} module_entry_table[9].fname := 'regwriteinteger'; module_entry_table[9].handler := @php_regwriteinteger; - {$IFDEF PHP4} - module_entry_table[9].func_arg_types := nil; - {$ENDIF} module_entry_table[10].fname := 'regwritestring'; module_entry_table[10].handler := @php_regwritestring; - {$IFDEF PHP4} - module_entry_table[10].func_arg_types := nil; - {$ENDIF} module_entry_table[11].fname := nil; module_entry_table[11].handler := nil; - {$IFDEF PHP4} - module_entry_table[11].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; diff --git a/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr b/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr index 6972d25..cb67916 100644 --- a/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr +++ b/Source/Demos/Extensions/Delphi Class 2/delphi_class2.dpr @@ -59,43 +59,23 @@ begin DelphiTable[4].fname := 'delphi_extract_file_ext'; DelphiTable[4].handler := @delphi_extract_file_ext; - {$IFDEF PHP4} - DelphiTable[4].func_arg_types := nil; - {$ELSE} DelphiTable[4].arg_info := nil; - {$ENDIF} DelphiTable[5].fname := 'delphi_show_message'; - DelphiTable[5].handler := @delphi_show_message; - {$IFDEF PHP4} - DelphiTable[5].func_arg_types := nil; - {$ELSE} + DelphiTable[5].handler := @delphi_show_message;} DelphiTable[5].arg_info := nil; - {$ENDIF} DelphiTable[6].fname := 'register_delphi_object'; delphitable[6].handler := @register_delphi_object; - {$IFDEF PHP4} - DelphiTable[6].func_arg_types := nil; - {$ELSE} DelphiTable[6].arg_info := nil; - {$ENDIF} DelphiTable[7].fname := 'delphi_get_author'; DelphiTable[7].handler := @delphi_get_author; - {$IFDEF PHP4} - DelphiTable[7].func_arg_types := nil; - {$ELSE} - DelphiTable[7].arg_info := nil; - {$ENDIF} + DelphiTable[7].arg_info := nil;} DelphiTable[8].fname := 'delphi_str_date'; DelphiTable[8].handler := @delphi_str_date; - {$IFDEF PHP4} - DelphiTable[8].func_arg_types := nil; - {$ELSE} DelphiTable[8].arg_info := nil; - {$ENDIF} PHP_FUNCTION(DelphiTable[9], 'delphi_get_system_directory', @delphi_get_system_directory); @@ -122,9 +102,6 @@ begin ModuleEntry.request_startup_func := @rinit; ModuleEntry.request_shutdown_func := @rshutdown; ModuleEntry.info_func := @php_info_module; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @DelphiTable[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos/Extensions/css/css.dpr b/Source/Demos/Extensions/css/css.dpr index 79f0d5a..0b04986 100644 --- a/Source/Demos/Extensions/css/css.dpr +++ b/Source/Demos/Extensions/css/css.dpr @@ -104,9 +104,7 @@ begin ModuleEntry.info_func := @php_info_module; module_entry_table[0].fname := 'delphi_css'; module_entry_table[0].handler := @delphi_css; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} + ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos/Extensions/php class/php_class.dpr b/Source/Demos/Extensions/php class/php_class.dpr index c0938e1..8333ffc 100644 --- a/Source/Demos/Extensions/php class/php_class.dpr +++ b/Source/Demos/Extensions/php class/php_class.dpr @@ -100,25 +100,11 @@ begin properties[0] := 'name'; properties[1] := 'tool'; properties[2] := 'height'; - {$IFDEF PHP4} - _object_init_ex(return_value, ce, nil, 0, TSRMLS_DC ); - {$ELSE} object_init(return_value, ce, TSRMLS_DC ); - {$ENDIF} - - {$IFDEF PHP4} - add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1); - add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Delphi', 1); - {$ELSE} add_property_string_ex(return_value, properties[0], strlen(properties[0]) + 1, 'Serhiy', 1, TSRMLS_DC); add_property_string_ex(return_value, properties[1], strlen(properties[1]) + 1, 'Delphi', 1, TSRMLS_DC); - {$ENDIF} - {$IFDEF PHP4} - add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185); - {$ELSE} add_property_long_ex(return_value, properties[2], strlen(properties[2]) + 1, 185, TSRMLS_DC); - {$ENDIF} end; @@ -143,9 +129,7 @@ begin ModuleEntry.info_func := @php_info_module; module_entry_table[0].fname := 'get_demo_class'; module_entry_table[0].handler := @get_demo_class; - {$IFDEF PHP4} - module_entry_table[0].func_arg_types := nil; - {$ENDIF} + ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos/Extensions/skeleton/skeleton.dpr b/Source/Demos/Extensions/skeleton/skeleton.dpr index e951a0c..4bebef7 100644 --- a/Source/Demos/Extensions/skeleton/skeleton.dpr +++ b/Source/Demos/Extensions/skeleton/skeleton.dpr @@ -103,9 +103,6 @@ begin ModuleEntry.info_func := @php_info_module; Module_entry_table[0].fname := 'confirm_extname_compiled'; Module_entry_table[0].handler := @confirm_extname_compiled; - {$IFDEF PHP4} - Module_entry_table[0].func_arg_types := nil; - {$ENDIF} ModuleEntry.functions := @module_entry_table[0]; ModuleEntry._type := MODULE_PERSISTENT; {$IFDEF PHP530} diff --git a/Source/Demos/psvPHP/Components/Unit1.pas b/Source/Demos/psvPHP/Components/Unit1.pas index d0afb70..5a9e4e9 100644 --- a/Source/Demos/psvPHP/Components/Unit1.pas +++ b/Source/Demos/psvPHP/Components/Unit1.pas @@ -86,18 +86,6 @@ procedure TfrmTest.FormCreate(Sender: TObject); memScript.Lines.Clear; with memScript.Lines do begin - {$IFDEF PHP4} - Add('$btnClose = register_delphi_component("btnClose");'); - Add('$frmTest = register_delphi_component("frmTest");'); - Add('$btnClose->Caption = "&Exit";'); - Add('$frmTest->Caption = "PHP4Delphi demo";'); - Add('$btnClose->Top = 150;'); - Add('$btnClose->Font->Size = 10;'); - Add('$btnClose->Cursor = -21;'); - Add('$frmTest->Color = clGreen;'); - Add('$st = delphi_input_box("InputBox", "Type your message", "Done");'); - Add('delphi_show_message($st);'); - {$ELSE} Add('$btnClose = register_delphi_component("btnClose");'); Add('$frmTest = register_delphi_component("frmTest");'); Add('$btnClose->Caption = "&Exit";'); @@ -108,7 +96,6 @@ procedure TfrmTest.FormCreate(Sender: TObject); Add('$frmTest->Color = clGreen;'); Add('$st = delphi_input_box("InputBox", "Type your message", "Done");'); Add('delphi_show_message($st);'); - {$ENDIF} end; PHPEngine.StartupEngine; end; diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index 0886d78..dd42a80 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -32,7 +32,7 @@ var begin if zend_parse_method_parameters(1, TSRMLS_DC, this_ptr, 'z', @Text) = 0 then begin - ShowMessage(WideString(Z_RawStr(Text))); + ShowMessage(Z_STRVAL(Text)); end; end; procedure grc(ht: integer; return_value: pzval; diff --git a/Source/Demos/psvPHP/sample1/Unit1.pas b/Source/Demos/psvPHP/sample1/Unit1.pas index 53d68ce..7b7281e 100644 --- a/Source/Demos/psvPHP/sample1/Unit1.pas +++ b/Source/Demos/psvPHP/sample1/Unit1.pas @@ -110,13 +110,8 @@ procedure TfrmPHPDemo.DisplayResultInBrowser(AStr: string); AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ParamStr(0)+'/php"', [rfReplaceAll, rfIgnoreCase]); - {$IFDEF PHP4} - AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', - 'src="/service/res://'+ ParamStr(0) + '/zend1"', [rfReplaceAll, rfIgnoreCase]); - {$ELSE} AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ ParamStr(0) + '/zend2"', [rfReplaceAll, rfIgnoreCase]); - {$ENDIF} Stream := StringToOleStream(AStr); StreamInit := Webbrowser1.Document as IPersistStreamInit; diff --git a/Source/Demos/psvPHP/sample1/frm_phpDemo.pas b/Source/Demos/psvPHP/sample1/frm_phpDemo.pas index 4593e8e..98e98f3 100644 --- a/Source/Demos/psvPHP/sample1/frm_phpDemo.pas +++ b/Source/Demos/psvPHP/sample1/frm_phpDemo.pas @@ -117,13 +117,8 @@ procedure TfrmPHPDemo.DisplayResultInBrowser(AStr: string); AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ParamStr(0)+'/php"', [rfReplaceAll, rfIgnoreCase]); - {$IFDEF PHP4} - AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', - 'src="/service/res://'+ ParamStr(0) + '/zend1"', [rfReplaceAll, rfIgnoreCase]); - {$ELSE} AStr := StringReplace(AStr, 'src="http://github.com/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42"', 'src="/service/res://'+ ParamStr(0) + '/zend2"', [rfReplaceAll, rfIgnoreCase]); - {$ENDIF} Stream := StringToOleStream(AStr); StreamInit := Webbrowser1.Document as IPersistStreamInit; diff --git a/Source/PHP.INC b/Source/PHP.INC index 09db880..d7fa89c 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -35,13 +35,19 @@ Define suitable visual library //Version {$DEFINE PHP560} + //PHP Version +{$DEFINE ZTS} + //Thread Safe mode (php7ts, e.g) {$DEFINE VCL} - + //visual library - Kylix, VCL, FMX for Delphi and LCL, fpGUI for Lazarus + //Features {$DEFINE PHP_UNICODE} //PHP unicode support *Enables WideString and UnicodeString -{$DEFINE REGISTER_COLOURS} +{.$DEFINE REGISTER_COLOURS} //constants for Delphi colours +{.$DEFINE php_side_handler} + //enable ability to define own error handler from php side ~NON_TC {.$DEFINE QUIET_LOAD} //Do not show errors while loading php library {.$DEFINE PHP4DELPHI_AUTOLOAD} @@ -50,8 +56,6 @@ Define suitable visual library // Unload php library at finalization //Compiler switches -{.$DEFINE php_side_handler} - //enable ability to define own error handler from php side ~NON_TC {.$DEFINE COMPILER_php7pv} // use macroses from PHP sources patch // https://github.com/resistancelion/no-name-engine/tree/master/php-src @@ -70,7 +74,6 @@ Define suitable visual library - //E N D {$WARN UNIT_DEPRECATED OFF} {$IFDEF PHP_UNICODE} {$DEFINE UNICODE} {$ENDIF} @@ -101,9 +104,23 @@ Define suitable visual library {$ENDIF} {$ENDIF} -{$IFNDEF LINUX} - {$DEFINE ZTS} {zend thread safety support} -{$ENDIF} + +{$ifdef FPC} + {$DEFINE VERSION1} + {$DEFINE VERSION2} + {$DEFINE VERSION3} + {$DEFINE VERSION4} + {$DEFINE VERSION5} + {$DEFINE VERSION6} + {$DEFINE VERSION7} + {$DEFINE VERSION8} + {$DEFINE VERSION9} + {$DEFINE VERSION10} + {$DEFINE VERSION11} + {$DEFINE VERSION12} + {$DEFINE VERSION13} + {$DEFINE VERSION14} +{$endif} {$IFNDEF VER80} {Delphi 1.0} {$DEFINE VERSION2} {Delphi 2.0 and BCB 1 or higher} @@ -179,6 +196,17 @@ Define suitable visual library {$ENDIF} {$ENDIF} +{$IFNDEF VER180} + {$DEFINE OLD_PATHS} +{$ENDIF} + +{$IFDEF VERSION12} + {$DEFINE WSTR} +{$ELSE} + {$IFDEF PHP_UNICODE} {$UNDEF PHP_UNICODE} {$ENDIF} +{$ENDIF} + + {$IFDEF VERSION6} {$WARN SYMBOL_PLATFORM OFF} {$IFDEF VERSION7} @@ -214,8 +242,10 @@ Define suitable visual library {$IFDEF VCL} {$UNDEF VCL} {$ENDIF} {$DEFINE LCL} {$ELSE} - {$IFDEF LCL} - {$UNDEF LCL} - {$DEFINE VCL} - {$ENDIF} + {$UNDEF LCL} + {$IFDEF WINDOWS} + {$DEFINE VCL} + {$ELSE} + {$DEFINE KYLIX} + {$ENDIF} {$ENDIF} diff --git a/Source/PHP4DelphiD2006.dpk b/Source/PHP4DelphiD2006.dpk index 35082b9..2ff391a 100644 --- a/Source/PHP4DelphiD2006.dpk +++ b/Source/PHP4DelphiD2006.dpk @@ -30,7 +30,7 @@ package php4DelphiD2006; {$DESIGNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl, designide, @@ -38,11 +38,11 @@ rrequires vclx, php4DelphiR2006; -ocontains +contains PHPProjectWizard in 'PHPProjectWizard.pas', php4DelphiReg in 'php4DelphiReg.pas', php4DelphiWeb in 'php4DelphiWeb.pas', phpWeb in 'phpWeb.pas', phpAbout in 'phpAbout.pas' {dlgAbout}; -d. +end. diff --git a/Source/PHP4DelphiD2006.dproj.local b/Source/PHP4DelphiD2006.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/PHP4DelphiD2006.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/PHP4DelphiD2006.stat b/Source/PHP4DelphiD2006.stat deleted file mode 100644 index 2539032..0000000 --- a/Source/PHP4DelphiD2006.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=4 -StartTime=21.09.2018 3:07:34 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index 23b8426..d26fec7 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -22,7 +22,6 @@ interface uses {Windows} SysUtils, - VCL.Dialogs, {$IFDEF FPC} dynlibs {$ELSE} @@ -122,8 +121,8 @@ interface php_ob_handler_used: function (handler_name : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} php_ob_init_conflict: function (handler_new : zend_pchar; handler_set : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; - {$ENDIF} - {$ENDIF} + {$ifend} + {$endif} //php_output.h @@ -237,7 +236,7 @@ function GetPHPGlobals(TSRMLS_DC : pointer) : Pphp_Core_Globals; procedure PHP_FUNCTION(var AFunction : zend_function_entry; AName : zend_pchar; AHandler : pointer); -function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; +function LoadPHP(const LibraryPath: zend_ustr = PHPlp) : boolean; procedure UnloadPHP; @@ -274,7 +273,7 @@ function ValueToFloat(Value : zend_ustr) : extended; {$ELSE} php_body_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; php_header_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; -{$ENDIF} +{$ifend} php_header: function(TSRMLS_D: pointer) : integer; cdecl; php_setcookie: function (name : zend_pchar; name_len : integer; value : zend_pchar; value_len: integer; @@ -433,13 +432,13 @@ procedure php_end_implicit_flush(TSRMLS_D : pointer); {$ENDIF} -function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; +function LoadPHP(const LibraryPath: zend_ustr = PHPlp) : boolean; begin Result := false; if not PHPLoaded then begin - if not LoadZend(DllFileName) then + if not LoadZend(LibraryPath) then Exit; end; @@ -509,29 +508,29 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; {$ELSE} LFunc(@php_start_ob_buffer, 'php_start_ob_buffer'); - php_start_ob_buffer_named, 'php_start_ob_buffer_named'); + LFunc(@php_start_ob_buffer_named, 'php_start_ob_buffer_named'); - php_end_ob_buffer, 'php_end_ob_buffer'); + LFunc(@php_end_ob_buffer, 'php_end_ob_buffer'); - php_end_ob_buffers, 'php_end_ob_buffers'); + LFunc(@php_end_ob_buffers, 'php_end_ob_buffers'); - php_ob_get_buffer, 'php_ob_get_buffer'); + LFunc(@php_ob_get_buffer, 'php_ob_get_buffer'); - php_ob_get_length, 'php_ob_get_length'); + LFunc(@php_ob_get_length, 'php_ob_get_length'); - php_start_implicit_flush, 'php_start_implicit_flush'); + LFunc(@php_start_implicit_flush, 'php_start_implicit_flush'); - php_end_implicit_flush, 'php_end_implicit_flush'); + LFunc(@php_end_implicit_flush, 'php_end_implicit_flush'); - php_get_output_start_filename, 'php_get_output_start_filename'); + LFunc(@php_get_output_start_filename, 'php_get_output_start_filename'); - php_get_output_start_lineno, 'php_get_output_start_lineno'); + LFunc(@php_get_output_start_lineno, 'php_get_output_start_lineno'); - php_ob_handler_used, 'php_ob_handler_used'); + LFunc(@php_ob_handler_used, 'php_ob_handler_used'); {$ENDIF} {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} - php_ob_init_conflict, 'php_ob_init_conflict'); - {$ENDIF} + LFunc(@php_ob_init_conflict, 'php_ob_init_conflict'); + {$ifend} LFunc(@php_strtoupper, 'php_strtoupper'); LFunc(@php_strtolower,'php_strtolower'); @@ -586,7 +585,7 @@ function LoadPHP(const DllFileName: zend_ustr = PHPWin) : boolean; {$ELSE} LFunc(@php_body_write, 'php_body_write' ); LFunc(@php_header_write, 'php_header_write'); - {$ENDIF} + {$ifend} {$IFNDEF COMPILER_php7pv} LFunc(@php_log_err, 'php_log_err'); {$ENDIF} @@ -673,6 +672,7 @@ function FloatToValue(Value: Extended): zend_ustr; var c: CharPtr; begin + {$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; @@ -680,19 +680,38 @@ function FloatToValue(Value: Extended): zend_ustr; finally FormatSettings.DecimalSeparator := c; end; + {$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + Result := SysUtils.FormatFloat('0.####', Value); + finally + DecimalSeparator := c; + end; + {$ifend} end; function ValueToFloat(Value : zend_ustr) : extended; var c: CharPtr; begin + {$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; - Result := SysUtils.StrToFloat(Value); + Result := SysUtils.StrToFloat( Value); finally - FormatSettings.DecimalSeparator := c; + FormatSettings.DecimalSeparator := c; + end; + {$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + Result := SysUtils.StrToFloat( Value); + finally + DecimalSeparator := c; end; + {$ifend} end; @@ -714,7 +733,7 @@ function GetPHPVersion: TPHPFileInfo; Result.MinorVersion := 0; Result.Release := 0; Result.Build := 0; - FileName := PHPWin; + FileName := PHPlp; InfoSize := GetFileVersionInfoSize(PWideChar(Filename), Wnd); if InfoSize <> 0 then begin @@ -735,13 +754,13 @@ function GetPHPVersion: TPHPFileInfo; end; {$ENDIF} -initialization {$IFDEF PHP4DELPHI_AUTOLOAD} +initialization LoadPHP; {$ENDIF} -finalization {$IFDEF PHP4DELPHI_AUTOUNLOAD} +finalization UnloadPHP; {$ENDIF} diff --git a/Source/PHPCommon.pas b/Source/PHPCommon.pas index 04369c1..d0a3a41 100644 --- a/Source/PHPCommon.pas +++ b/Source/PHPCommon.pas @@ -19,7 +19,27 @@ interface uses - Windows, Messages, SysUtils, Classes, VCL.Graphics, VCL.Controls, VCL.Forms, VCL.Dialogs, + Windows, Messages, SysUtils, Classes, + {$if CompilerVersion > 21} + VCL.Controls, + VCL.Dialogs, + VCL.Forms, VCL.Graphics, + {$elseif defined(FMX)} + FMX.Controls, + FMX.Dialogs, + FMX.Forms, FMX.Graphics, + {$else} + {$ifdef KYLIX} + QControls, + QDialogs, + QForms, QGraphics, + {$else} + Controls, + Dialogs, + Forms, Graphics, + {$endif} + {$ifend} + ZendTypes, ZendAPI, PHPTypes, PHPAPI; type @@ -274,6 +294,7 @@ function TPHPVariable.GetAsInteger: integer; var c: CharPtr; begin +{$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; @@ -281,6 +302,15 @@ function TPHPVariable.GetAsInteger: integer; finally FormatSettings.DecimalSeparator := c; end; +{$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + Result := Round(ValueToFloat(FValue)); + finally + DecimalSeparator := c; + end; +{$ifend} end; function TPHPVariable.GetDisplayName: string; @@ -308,6 +338,7 @@ procedure TPHPVariable.SetAsInteger(const Value: integer); var c: CharPtr; begin +{$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; @@ -315,6 +346,15 @@ procedure TPHPVariable.SetAsInteger(const Value: integer); finally FormatSettings.DecimalSeparator := c; end; +{$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + FValue := IntToStr(Value); + finally + DecimalSeparator := c; + end; +{$ifend} end; { TPHPConstant } diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 192f6ff..62d0a6c 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -20,8 +20,9 @@ interface uses -VCL.Dialogs, +{$ifdef PHP_UNICODE} WideStrUtils, +{$endif} {$IFDEF FPC} LCLType,LCLIntf,dynlibs,libc{$ELSE}Windows{$ENDIF}, SysUtils, ZendTypes, Variants, PHPTypes; @@ -32,37 +33,22 @@ interface TASDate = array of AnsiString; PASDate = ^TWSDate; const -PHPWin = -{$IFDEF PHP_DEBUG} +PHPlp = {$IFDEF PHP7} - 'php7ts_debug.dll' + 'php7' {$ELSE} - {$IFDEF PHP5} - 'php5ts_debug.dll' + {$IFDEF PHP5} + 'php5' {$ELSE} - 'php4ts_debug.dll' + 'php4' {$ENDIF} - {$ENDIF} +{$ENDIF} +{$IFDEF ZTS} + 'ts' {$ENDIF} +{$IFDEF PHP_DEBUG} + '_debug' {$ENDIF} +{$IFDEF WINDOWS} + + '.dll' {$ELSE} - {$IFDEF PHP5} - {$IFDEF PHP7} - {$IFDEF LINUX} - 'php7ts.so' - {$ENDIF} - {$IFDEF MSWINDOWS} - 'php7ts.dll' - {$ENDIF} - {$ELSE} - {$IFDEF LINUX} - 'php5ts.so' - {$ENDIF} - {$IFDEF MSWINDOWS} - 'php5ts.dll' - {$ENDIF} - {$ENDIF} - {$ELSE} - 'php4ts.dll' - {$ENDIF} + + '.so' {$ENDIF}; type @@ -84,9 +70,14 @@ align_test = record {$IFNDEF PHP_UNICODE} function AnsiFormat(const Format: AnsiString; const Args: array of const): AnsiString; {$ENDIF} +{$ifdef VERSION12} function Lfunc(var Func: Pointer; addr: LPCWSTR): Bool; function HFunc(const Func: Pointer; addr: LPCWSTR): Bool; -function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; +{$else} +function Lfunc(var Func: Pointer; addr: PAnsiChar): BOOL; +function HFunc(const Func: Pointer; addr: PAnsiChar): Bool; +{$endif} +function LoadZEND(const LibraryPath: zend_ustr = PHPlp) : boolean; function __fgsapi(sapi_globals_value:pointer; tsrmls_dc:pointer): Pointer; procedure UnloadZEND; @@ -105,9 +96,11 @@ function ZENDLoaded: boolean; _erealloc : function(ptr: pointer; size: size_t; allow_failure: integer; __zend_filename: zend_pchar; __zend_lineno: uint; __zend_orig_filename: zend_pchar; __zend_orig_line_no: uint): pointer; cdecl; _estrdup : function(const s: zend_pchar; __zend_filename: zend_pchar; __zend_lineno: uint; __zend_orig_filename: zend_pchar; __zend_orig_line_no: uint): pointer; cdecl; _estrndup : function(s: zend_pchar; Len: Cardinal; __zend_filename: zend_pchar; __zend_lineno: uint; __zend_orig_filename: zend_pchar; __zend_orig_line_no: uint): zend_pchar; cdecl; + {$ifdef PHP_UNICODE} _estrndupu : function(s: PUTF8Char; Len: Cardinal; __zend_filename: PUTF8Char; __zend_lineno: uint; __zend_orig_filename: PUTF8Char; __zend_orig_line_no: uint): PUTF8Char; cdecl; + {$endif} function emalloc(size: size_t): pointer; procedure efree(ptr: pointer); function ecalloc(nmemb: size_t; size: size_t): pointer; @@ -674,17 +667,17 @@ procedure ZEND_PUTS(str: zend_pchar); zend_startup_modules : function(TSRMLS_DC:pointer):integer; zend_collect_module_handlers : function(TSRMLS_DC:pointer):integer; - procedure ZvalVAL(z:pzval; v:Boolean) overload; - procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG) overload; - procedure ZvalVAL(z:pzval) overload; - procedure ZvalVAL(z:pzval; v:Double) overload; - procedure ZvalVAL(z:pzval; v:SmallInt) overload; - procedure ZvalVAL(z:pzval; v:Extended) overload; + procedure ZvalVAL(z:pzval; v:Boolean); overload; + procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); overload; + procedure ZvalVAL(z:pzval); overload; + procedure ZvalVAL(z:pzval; v:Double); overload; + procedure ZvalVAL(z:pzval; v:SmallInt); overload; + procedure ZvalVAL(z:pzval; v:Extended); overload; procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); overload; - procedure ZvalString(z:pzval) overload; - procedure ZvalString(z:pzval; s:zend_pchar; len:Integer = 0) overload; - procedure ZvalString(z:pzval; s:PWideChar; len:Integer = 0) overload; - procedure ZvalString(z:pzval; s:string; len:Integer = 0) overload; + procedure ZvalString(z:pzval); overload; + procedure ZvalString(z:pzval; s:zend_pchar; len:Integer = 0); overload; + procedure ZvalString(z:pzval; s:PWideChar; len:Integer = 0); overload; + procedure ZvalString(z:pzval; s:string; len:Integer = 0); overload; function ZvalArrayAdd(z: pzval; Args: array of const): Integer; overload; function ZvalArrayAdd(z: pzval; idx: Integer; Args: array of const) @@ -718,9 +711,15 @@ function add_assoc_variant(arg: pzval; key: zend_pchar; key_len: uint; value: va procedure ZVAL_ARRAY(z: pzval; arr: TWSDate); overload; procedure ZVAL_ARRAY(z: pzval; arr: TASDate); overload; procedure ZVAL_ARRAY(z: pzval; arr: array of string); overload; +{$IFDEF WSTR} procedure ZVAL_ARRAY(z: pzval; arr: array of zend_ustr); overload; +{$ENDIF} procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; +{$if CompilerVersion > 21} procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; +{$else} +procedure ZVAL_ARRAY(z: pzval; arr: array of integer); overload; +{$ifend} procedure ZVAL_ARRAY(z: pzval; arr: Variant); overload; procedure ZVAL_ARRAYAC(z: pzval; keynames: Array of AnsiChar; keyvals: Array of AnsiChar); procedure ZVAL_ARRAYWC(z: pzval; keynames: Array of PWideChar; keyvals: Array of PWideChar); @@ -743,7 +742,9 @@ function ZendToVariant(const Value: pppzval;cobj: TObjectBConvertMethod=nil): Va {$ENDIF} procedure VariantToZend(const Value: Variant; z: pzval; cobj: TObjectAConvertMethod=nil); +{$IFDEF WSTR} procedure ZVAL_RawStr(z: pzval; s:RawByteString; duplicate: boolean); +{$ENDIF} procedure ZVAL_STRING(z: pzval; s: WideString; duplicate: boolean); procedure ZVAL_STRINGU(z: pzval; s: UTF8String; duplicate: boolean); procedure ZVAL_STRINGW(z: pzval; StW: WideString; duplicate: boolean); @@ -757,7 +758,7 @@ procedure zend_copy_constant(c: zend_constant); {$IF defined(PHP540) or defined(PHP550) or defined(PHP560)} procedure zend_copy_constants(target: PHashTable; source: PHashTable); cdecl; procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; -{$ENDIF} +{$IFEND} var get_zend_version : function(): zend_pchar; cdecl; @@ -769,7 +770,7 @@ procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; {$IFDEF PHP5} {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_copy_constants: procedure(target: PHashTable; source: PHashTable); cdecl; - {$ENDIF} + {$IFEND} zend_objects_new : function (_object : pointer; class_type : pointer; TSRMLS_DC : pointer) : {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; zend_objects_clone_obj: function(_object: pzval; TSRMLS_DC : pointer): {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; zend_objects_store_add_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; @@ -778,7 +779,7 @@ procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; function_add_ref: procedure (func: {$IFDEF PHP7}Pzend_function{$ELSE}PZendFunction{$ENDIF}); cdecl; {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_class_add_ref: procedure(aclass: Ppzend_class_entry); cdecl; - {$ENDIF} + {$IFEND} {$ENDIF} @@ -826,16 +827,24 @@ function object_init(arg: pzval; ce: pzend_class_entry; TSRMLS_DC : pointer) : i function Z_LVAL(z : Pzval) : longint; function Z_BVAL(z : Pzval) : boolean; function Z_DVAL(z : Pzval) : double; +{$ifdef WSTR} function Z_RAWSTR(z: PZval): RawByteString; +{$else} +function Z_RAWSTR(z: PZval): TBytes; +{$endif} + function Z_STRVAL(z : Pzval) : WideString; function Z_ASTRVAL(z : Pzval) : AnsiString; function Z_STRUVAL(z : PZval): UTF8String; -function Z_WSTRVAL(z : pzval) : String; +function Z_SSTRVAL(z : pzval) : String; function Z_CHAR(z: PZval) : zend_uchar; function Z_WCHAR(z: PZval) : WideChar; function Z_ACHAR(z: PZVAL): AnsiChar; +{$ifdef WSTR} function Z_UCHAR(z: PZVAL): UTF8Char; - +{$else} +function Z_UCHAR(z: PZVAL): AnsiChar; +{$endif} function Z_STRLEN(z : Pzval) : longint; function Z_ARRVAL(z : Pzval ) : PHashTable; function Z_OBJ_HANDLE(z :Pzval) : {$IFDEF PHP7} P_zend_object_handlers {$ELSE} zend_object_handle{$ENDIF}; @@ -891,6 +900,7 @@ function estrndup(s: zend_pchar; len: Cardinal): zend_pchar; else Result := nil; end; +{$ifdef PHP_UNICODE} function estrndupu(s: PUtf8Char; len: Cardinal): PUTf8Char; begin if assigned(s) then @@ -898,6 +908,7 @@ function estrndupu(s: PUtf8Char; len: Cardinal): PUTf8Char; else Result := nil; end; +{$endif} function emalloc(size: size_t): pointer; begin Result := _emalloc(size, nil, 0, nil, 0); @@ -1021,7 +1032,7 @@ procedure ZvalString(z:pzval; s:string; len:Integer = 0); ZvalString(z, _s, len); end; -procedure ZvalVAL(z:pzval; v:Boolean); +procedure ZvalVAL(z:pzval; v:Boolean); overload; Begin {$IFDEF PHP7} z^.u1.v._type @@ -1031,7 +1042,7 @@ procedure ZvalVAL(z:pzval; v:Boolean); z.value.lval := integer(v); End; -procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); +procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); overload; Begin {$IFDEF PHP7} z^.u1.v._type @@ -1041,7 +1052,7 @@ procedure ZvalVAL(z:pzval; v:Integer; const _type:Integer = IS_LONG); z^.value.lval := v; End; -procedure ZvalVAL(z:pzval); +procedure ZvalVAL(z:pzval); overload; Begin {$IFDEF PHP7} z^.u1.v._type @@ -1050,7 +1061,7 @@ procedure ZvalVAL(z:pzval); {$ENDIF} := IS_NULL; End; -procedure ZvalVAL(z:pzval; v:Double); +procedure ZvalVAL(z:pzval; v:Double); overload; Begin {$IFDEF PHP7} z^.u1.v._type @@ -1060,7 +1071,7 @@ procedure ZvalVAL(z:pzval; v:Double); z.value.dval := v; End; -procedure ZvalVAL(z:pzval; v:SmallInt); +procedure ZvalVAL(z:pzval; v:SmallInt); overload; begin {$IFDEF PHP7} z^.u1.v._type @@ -1070,7 +1081,7 @@ procedure ZvalVAL(z:pzval; v:SmallInt); z^.value.lval := v; end; -procedure ZvalVAL(z:pzval; v:Extended); +procedure ZvalVAL(z:pzval; v:Extended); overload; Begin {$IFDEF PHP7} z^.u1.v._type @@ -1080,7 +1091,7 @@ procedure ZvalVAL(z:pzval; v:Extended); z.value.dval := v; End; -procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); +procedure ZvalVAL(z: pzval; s: zend_ustr; len: Integer = 0); overload; var lens: Integer; AChar: zend_pchar; @@ -1294,9 +1305,14 @@ procedure MAKE_STD_ZVAL(out Result: pzval); -function GetArgPZval; +function GetArgPZval(Args: TVarRec; const _type: Integer = IS_LONG; + Make: Boolean = false): pzval; begin + {$if CompilerVersion > 21} if Args._Reserved1 = 0 then // nil + {$else} + if Integer(Args.VPointer) = 0 then + {$ifend} begin if Make then MAKE_STD_ZVAL(Result); @@ -1317,14 +1333,27 @@ function GetArgPZval; ZvalVAL(Result, Args.VBoolean); vtExtended: ZvalVAL(Result, Args.VExtended^); + {$if CompilerVersion > 21} vtClass, vtObject: ZvalVAL(Result, Args._Reserved1); + {$else} + vtClass: + ZvalVAL(Result, Integer(Args.VClass)); + vtObject: + ZvalVAL(Result, Integer(Args.VObject)); + {$ifend} vtString: ZvalVAL(Result, zend_ustr(Args.VString^)); vtAnsiString: ZvalVAL(Result, zend_pchar(zend_ustr(Args.VAnsiString))); + {$ifdef WSTR} vtUnicodeString: + {$if CompilerVersion > 21} ZvalVAL(Result, UnicodeString(Args._Reserved1)); + {$else} + ZvalVal(Result, UnicodeString(Args.VUnicodeString)); + {$ifend} + {$endif} vtWideChar: ZvalVAL(Result, zend_pchar(Args.VWideChar)); vtChar: @@ -1339,7 +1368,7 @@ function GetArgPZval; end; end; - +{$ifdef WSTR} procedure ZVAL_STRINGU(z: pzval; s: UTF8String; duplicate: boolean); var sc: PUTF8Char; @@ -1361,19 +1390,21 @@ procedure ZVAL_RawStr(z: pzval; s: RawByteString; duplicate: boolean); SetCodePage(_s, CP_UTF8, not IsUTF8String(_s)); ZVAL_STRINGU(z, UTF8String(_s), duplicate); end; +{$endif} procedure ZVAL_STRING(z: pzval; s: WideString; duplicate: boolean); begin ZVAL_STRINGU(z, UTF8String(s), duplicate); end; + procedure ZVAL_STRINGW(z: pzval; StW: WideString; duplicate: boolean); var St: UTF8String; sc: PUTF8Char; begin - St := UTF8String(StW); sc := PUtf8Char(St); + z^.value.str.len := Length(St); if duplicate then z^.value.str.val := estrndup(sc, z^.value.str.len) @@ -1546,10 +1577,10 @@ procedure VariantToZend(const Value:Variant;z:pzval; ZVAL_STRING(z, '', true); end; end; - + {$ifdef VERSION12} varUString : ZVAL_RawStr(z, RawByteString(TVarData(Value).VUString), true); - + {$endif} varOleStr : begin if Assigned ( TVarData(Value).VOleStr ) then @@ -1592,6 +1623,7 @@ procedure VariantToZend(const Value:Variant;z:pzval; end; //varRecord : integer(TVarData(Value).VRecord) //<==������... � �� ��� ��� �� ���������� ��� � ���� ����� RTTI �������� + {$if CompilerVersion > 21} varRecord : begin if Assigned(cobj) then @@ -1599,6 +1631,7 @@ procedure VariantToZend(const Value:Variant;z:pzval; else ZVALVAL(z); end; + //varObject : integer(TVarData(Value).VObject) //<==������... varObject : @@ -1608,6 +1641,8 @@ procedure VariantToZend(const Value:Variant;z:pzval; else ZVALVAL(z, integer(TObject(TVarData(Value).VPointer^))); end; + {$ifend} + varStrArg : begin if Assigned ( TVarData(Value).VString ) then @@ -1619,10 +1654,13 @@ procedure VariantToZend(const Value:Variant;z:pzval; ZVAL_STRING(z, '', true); end; end; - + {$if CompilerVersion > 21} varUStrArg : ZVAL_RawStr(z, RawByteString(TVarData(Value).VUString), true); + {$ifend} varInt64 : ZVALVAL(z, TVarData(Value).VInt64); + {$ifdef VERSION14} varUInt64 : ZVALVAL(z, TVarData(Value).VUInt64); + {$endif} varShortInt : ZVALVAL(z, Integer(TVarData(Value).VShortInt)); varSmallInt : ZVALVAL(z, Integer(TVarData(Value).VSmallint)); varInteger : ZVALVAL(z, TVarData(Value).VInteger); @@ -1816,7 +1854,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of string); overload; end; Exit; end; - +{$ifdef WSTR} procedure ZVAL_ARRAY(z: pzval; arr: array of zend_ustr); overload; var i: integer; @@ -1843,6 +1881,7 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of zend_ustr); overload; end; Exit; end; +{$endif} procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; var @@ -1870,7 +1909,12 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; end; Exit; end; + +{$ifdef VERSION14} procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; +{$else} +procedure ZVAL_ARRAY(z: pzval; arr: array of integer); overload; +{$endif} var i: integer; begin @@ -2149,7 +2193,12 @@ procedure UnloadZEND; FreeLibrary(H); end; end; + +{$ifdef VERSION12} function Lfunc(var Func: Pointer; addr: LPCWSTR): BOOL; +{$else} +function Lfunc(var Func: Pointer; addr: PAnsiChar): BOOL; +{$endif} begin Result := True; Func := GetProcAddress(PHPLib, addr); @@ -2161,7 +2210,11 @@ function Lfunc(var Func: Pointer; addr: LPCWSTR): BOOL; Result := False; end; end; +{$ifdef VERSION12} function HFunc(const Func: Pointer; addr: LPCWSTR): BOOL; +{$else} +function HFunc(const Func: Pointer; addr: PAnsiChar): Bool; +{$endif} var fr: FARPROC; begin Result := True; @@ -2197,16 +2250,19 @@ procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; begin Inc(aclass^.refcount,1); end; -{$ENDIF} -function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; +{$IFEND} +function LoadZEND(const LibraryPath: zend_ustr = PHPlp) : boolean; var WriteFuncPtr : pointer; begin {$IFDEF QUIET_LOAD} Result := false; {$ENDIF} - PHPLib := LoadLibrary( PWideChar(WideString(DllFilename)) ); - + {$if CompilerVersion >= 20} + PHPLib := LoadLibrary( PWideChar(WideString(LibraryPath)) ); + {$else} + PHPLib := LoadLibrary( String( LibraryPath ) ); + {$ifend} {$IFNDEF QUIET_LOAD} if PHPLib = 0 then begin @@ -2220,13 +2276,13 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$IFDEF PHP5} {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} LFunc(@zend_copy_constants, 'zend_copy_constants'); - {$ENDIF} + {$IFEND} LFunc(@zend_objects_new, 'zend_objects_new'); LFunc(@zend_objects_clone_obj, 'zend_objects_clone_obj'); LFunc(@function_add_ref, 'function_add_ref'); {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} LFunc(@zend_class_add_ref, 'zend_class_add_ref'); - {$ENDIF} + {$IFEND} LFunc(@zend_objects_store_add_ref, 'zend_objects_store_add_ref'); LFunc(@zend_objects_store_del_ref, 'zend_objects_store_del_ref'); @@ -2327,6 +2383,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; '_estrndup@@8' {$ENDIF}); + {$ifdef PHP_UNICODE} // -- _estrndup Unicode LFunc(@_estrndupu, {$IFNDEF PHP7} @@ -2334,6 +2391,7 @@ function LoadZEND(const DllFilename: zend_ustr = PHPWin) : boolean; {$ELSE} '_estrndup@@8' {$ENDIF}); + {$endif} // -- zend_set_memory_limit LFunc(@zend_set_memory_limit, 'zend_set_memory_limit'); @@ -3469,7 +3527,21 @@ function Z_VARREC(z: pzval): TVarRec; end; end; end; -function Z_RawStr(z: pzval): RawByteString; +{$ifndef WSTR} +function RawByteString(s: String): TBytes; overload; +begin + +end; + +function RawByteString(s: PAnsiChar): TBytes; overload; +begin + +end; + +function Z_RAWSTR(z: pzval): TBytes; +{$else} +function Z_RAWSTR(z: pzval): RawByteString; +{$endif} {$ifdef fpc} var s_len: SizeInt; @@ -3485,7 +3557,7 @@ function Z_RawStr(z: pzval): RawByteString; Result := RawByteString('False'); end; IS_LONG: - Result := RawByteString(inttostr(z^.value.lval)); + Result := RawByteString(IntToStr(z^.value.lval)); IS_DOUBLE: Result := RawByteString(FloatToStr(z^.value.dval)); IS_STRING: @@ -3516,7 +3588,7 @@ function Z_ASTRVAL(z : pzval) : AnsiString; Result := AnsiString(Z_RawStr(z)); end; -function Z_WSTRVAL(z : pzval) : String; +function Z_SSTRVAL(z : pzval) : String; begin Result := String(Z_RawStr(z)); end; @@ -3576,6 +3648,7 @@ function Z_WCHAR(z: PZVAL): WideChar; SetLength(S,1); Result := WideChar(S[1]); end; +{$ifdef WSTR} function Z_UCHAR(z: PZVAL): UTF8Char; var S: UTF8String; begin @@ -3594,6 +3667,12 @@ function Z_UCHAR(z: PZVAL): UTF8Char; SetLength(S,1); Result := Utf8Char(S[1]); end; +{$else} +function Z_UCHAR(z: PZVAL): AnsiChar; +begin + Result := Z_ACHAR(z); +end; +{$endif} function Z_STRLEN(z : pzval) : longint; begin @@ -3703,13 +3782,13 @@ function DupStr(strSource : zend_pchar) : zend_pchar; cdecl; end; {$ENDIF} -initialization {$IFDEF PHP4DELPHI_AUTOLOAD} +initialization LoadZEND; {$ENDIF} -finalization {$IFDEF PHP4DELPHI_AUTOUNLOAD} +finalization UnloadZEND; {$ENDIF} diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index dcc97c5..63588f9 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -16,7 +16,7 @@ interface uses - {$IFNDEF FPC} Windows {$ELSE} LCLType{$ENDIF}, {$IFDEF PHP7} hzend_types, {$ENDIF} SysUtils; + {$IFNDEF FPC} Windows {$ELSE} LCLType{$ENDIF}, SysUtils; const //zend.h @@ -340,47 +340,36 @@ interface //zend_modules.h const -{$IFDEF PHP7} - ZEND_MODULE_API_NO = 20151012; -{$ELSE} - {$IFDEF PHP530} - ZEND_MODULE_API_NO = - {$IFDEF PHP560} - 20131226 - {$ELSE} - {$IFDEF PHP550}20121212{$ELSE}{$IFDEF PHP540}20100525{$ELSE}20090626{$ENDIF}{$ENDIF} - {$ENDIF}; - {$ELSE} - {$IFDEF PHP520} - ZEND_MODULE_API_NO = 20060613; - {$ELSE} - {$IFDEF PHP512} - ZEND_MODULE_API_NO = 20050922; - {$ELSE} - {$IFDEF PHP511} - ZEND_MODULE_API_NO = 20050922; - {$ELSE} - {$IFDEF PHP510} - ZEND_MODULE_API_NO = 20050617; - {$ELSE} - {$IFDEF PHP504} - ZEND_MODULE_API_NO = 20041030; - {$ELSE} - ZEND_MODULE_API_NO = 20040412; - {$ENDIF} - {$ENDIF} - {$ENDIF} - {$ENDIF} - {$ENDIF} -{$ENDIF} -{$ENDIF} -{$IFDEF ZTS} -const - USING_ZTS = 1; -{$ELSE} + ZEND_MODULE_API_NO_700 = 20151012; + ZEND_MODULE_API_NO_560 = 20131226; + ZEND_MODULE_API_NO_550 = 20121212; + ZEND_MODULE_API_NO_540 = 20100525; + ZEND_MODULE_API_NO_530 = 20090626; + ZEND_MODULE_API_NO_520 = 20060613; + ZEND_MODULE_API_NO_511 = 20050922; + ZEND_MODULE_API_NO_510 = 20050617; + ZEND_MODULE_API_NO_504 = 20041030; + ZEND_MODULE_API_NO_500 = 20040412; + + ZEND_MODULE_API_NO = + {$ifdef PHP700}20151012 + {$elseif defined(PHP560)}20131226 + {$elseif defined(PHP550)}20121212 + {$elseif defined(PHP540)}20100525 + {$elseif defined(PHP530)}20090626 + {$elseif defined(PHP520)}20060613 + {$elseif defined(PHP512)}20050922 + {$elseif defined(PHP511)}20050922 + {$elseif defined(PHP510)}20050617 + {$elseif defined(PHP504)}20041030 + {$else}20040412 + {$ifend}; + const - USING_ZTS = 0; -{$ENDIF} + USING_ZTS = + {$ifdef ZTS}1 + {$else}0 + {$endif}; const @@ -493,14 +482,18 @@ interface UIntPtr = LongWord; ULongPtr = ULong; {$ENDIF} + {$if defined(WSTR) and (CompilerVersion < 22) } + UTF8Char = AnsiChar; + PUTF8Char = PAnsiChar; + {$ifend} zend_uint = UIntPtr; zend_bool = boolean; - zend_uchar = {$IF Defined(PHP_UNICODE)}Utf8Char{$ELSE}AnsiChar{$ENDIF}; - zend_ustr = {$IF Defined(PHP_UNICODE)}UTF8String{$ELSE}AnsiString{$ENDIF}; + zend_uchar = {$IFDEF PHP_UNICODE}UTF8Char{$ELSE}AnsiChar{$ENDIF}; + zend_ustr = {$IFDEF PHP_UNICODE}UTF8String{$ELSE}AnsiString{$ENDIF}; zend_ulong = ULongPtr; zend_long = IntPtr; - zend_pchar = {$IF Defined(PHP_UNICODE)}PUtf8Char{$ELSE}PAnsiChar{$ENDIF}; - zend_pstr = {$IF Defined(PHP_UNICODE)}PUtf8String{$ELSE}PAnsiString{$ENDIF}; + zend_pchar = {$IFDEF PHP_UNICODE}PUTF8Char{$ELSE}PAnsiChar{$ENDIF}; + zend_pstr = {$IFDEF PHP_UNICODE}PUtf8String{$ELSE}PAnsiString{$ENDIF}; {$IFDEF PHP7} _zend_refcounted_h = record refcount : cardinal; @@ -1077,7 +1070,7 @@ _zend_stream = record _type : zend_stream_type; {$ELSE} _type: uchar; - {$ENDIF} + {$IFEND} filename: zend_pchar; opened_path: zend_pchar; handle: diff --git a/Source/packages/php4delphi Delphi 10 Seattle.groupproj.local b/Source/packages/php4delphi Delphi 10 Seattle.groupproj.local deleted file mode 100644 index 744d98c..0000000 --- a/Source/packages/php4delphi Delphi 10 Seattle.groupproj.local +++ /dev/null @@ -1,12 +0,0 @@ - - - - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local b/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local deleted file mode 100644 index dbd6596..0000000 --- a/Source/packages/php4delphi Delphi 10.1 Berlin.groupproj.local +++ /dev/null @@ -1,11 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi 10.2 Tokyo.groupproj.local b/Source/packages/php4delphi Delphi 10.2 Tokyo.groupproj.local deleted file mode 100644 index 35948ce..0000000 --- a/Source/packages/php4delphi Delphi 10.2 Tokyo.groupproj.local +++ /dev/null @@ -1,13 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi 2010.groupproj.local b/Source/packages/php4delphi Delphi 2010.groupproj.local deleted file mode 100644 index ce4c03c..0000000 --- a/Source/packages/php4delphi Delphi 2010.groupproj.local +++ /dev/null @@ -1,23 +0,0 @@ - - - - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - 2019.03.04 22:32:41.465,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj - 2019.03.04 22:32:46.928,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj - 2019.03.04 22:32:52.359,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE7.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj - 2019.03.04 22:32:58.134,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE8.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE7.groupproj - 2019.03.04 22:33:22.418,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 2011.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE8.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi 2011.groupproj.local b/Source/packages/php4delphi Delphi 2011.groupproj.local deleted file mode 100644 index c2c593f..0000000 --- a/Source/packages/php4delphi Delphi 2011.groupproj.local +++ /dev/null @@ -1,22 +0,0 @@ - - - - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - 2019.03.04 22:32:41.465,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj - 2019.03.04 22:32:46.928,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj - 2019.03.04 22:32:52.359,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE7.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj - 2019.03.04 22:32:58.134,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE8.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE7.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi 5.bpg b/Source/packages/php4delphi Delphi 5.bpg new file mode 100644 index 0000000..aa42dc7 --- /dev/null +++ b/Source/packages/php4delphi Delphi 5.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = php4DelphiR5.bpl php4DelphiD5.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +php4DelphiR5.bpl: ..\php4DelphiR5.dpk + $(DCC) + +php4DelphiD5.bpl: ..\php4DelphiD5.dpk + $(DCC) + + diff --git a/Source/packages/php4delphi Delphi 7.bpg b/Source/packages/php4delphi Delphi 7.bpg new file mode 100644 index 0000000..dce47b4 --- /dev/null +++ b/Source/packages/php4delphi Delphi 7.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = php4DelphiR7.bpl php4DelphiD7.bpl +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +php4DelphiR7.bpl: ..\php4DelphiR7.dpk + $(DCC) + +php4DelphiD7.bpl: ..\php4DelphiD7.dpk + $(DCC) + + diff --git a/Source/packages/php4delphi Delphi XE1.groupproj.local b/Source/packages/php4delphi Delphi XE1.groupproj.local deleted file mode 100644 index 730de94..0000000 --- a/Source/packages/php4delphi Delphi XE1.groupproj.local +++ /dev/null @@ -1,14 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE2.groupproj.local b/Source/packages/php4delphi Delphi XE2.groupproj.local deleted file mode 100644 index c62f4a8..0000000 --- a/Source/packages/php4delphi Delphi XE2.groupproj.local +++ /dev/null @@ -1,15 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE3.groupproj.local b/Source/packages/php4delphi Delphi XE3.groupproj.local deleted file mode 100644 index 5380455..0000000 --- a/Source/packages/php4delphi Delphi XE3.groupproj.local +++ /dev/null @@ -1,16 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE4.groupproj.local b/Source/packages/php4delphi Delphi XE4.groupproj.local deleted file mode 100644 index a7c375a..0000000 --- a/Source/packages/php4delphi Delphi XE4.groupproj.local +++ /dev/null @@ -1,17 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE5.groupproj.local b/Source/packages/php4delphi Delphi XE5.groupproj.local deleted file mode 100644 index 47e6273..0000000 --- a/Source/packages/php4delphi Delphi XE5.groupproj.local +++ /dev/null @@ -1,18 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE6.groupproj.local b/Source/packages/php4delphi Delphi XE6.groupproj.local deleted file mode 100644 index 2c6ab26..0000000 --- a/Source/packages/php4delphi Delphi XE6.groupproj.local +++ /dev/null @@ -1,19 +0,0 @@ - - - - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - 2019.03.04 22:32:41.465,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE7.groupproj.local b/Source/packages/php4delphi Delphi XE7.groupproj.local deleted file mode 100644 index 9691c31..0000000 --- a/Source/packages/php4delphi Delphi XE7.groupproj.local +++ /dev/null @@ -1,20 +0,0 @@ - - - - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - 2019.03.04 22:32:41.465,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj - 2019.03.04 22:32:46.928,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj - - - - - diff --git a/Source/packages/php4delphi Delphi XE8.groupproj.local b/Source/packages/php4delphi Delphi XE8.groupproj.local deleted file mode 100644 index fded362..0000000 --- a/Source/packages/php4delphi Delphi XE8.groupproj.local +++ /dev/null @@ -1,21 +0,0 @@ - - - - 1899.12.30 00:00:00.000.047,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10 Seattle.groupproj - 1899.12.30 00:00:00.000.717,C:\Users\Andrew\Documents\GitHub\php4delphi\ProjectGroup1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj - 1899.12.30 00:00:00.000.086,C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi2010.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi 10 Seattle.groupproj - 2019.03.04 22:31:53.120,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:03.207,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.1 Berlin.groupproj - 2019.03.04 22:32:09.673,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10 Seattle.groupproj - 2019.03.04 22:32:17.131,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi 10.2 Tokyo.groupproj - 2019.03.04 22:32:22.720,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE1.groupproj - 2019.03.04 22:32:29.457,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE2.groupproj - 2019.03.04 22:32:34.993,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE3.groupproj - 2019.03.04 22:32:41.465,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE4.groupproj - 2019.03.04 22:32:46.928,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE5.groupproj - 2019.03.04 22:32:52.359,C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE7.groupproj=C:\Users\Andrew\Documents\GitHub\php4delphi\packages\php4delphi Delphi XE6.groupproj - - - - - diff --git a/Source/php4App.dproj.local b/Source/php4App.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4App.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4App.identcache b/Source/php4App.identcache deleted file mode 100644 index 303be0800985cc7e22649d7940d5f7d672a24a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 qcmZQ%U|^7Qwu(t9E>4Xp$S5#LNzEz9$OJPT3kvj73W|U#-~a$Qs|#ZQ diff --git a/Source/php4App.stat b/Source/php4App.stat deleted file mode 100644 index fd9c33f..0000000 --- a/Source/php4App.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=3 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=724 -OtherSecs=68 -StartTime=21.09.2018 13:22:04 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4AppUnit.pas b/Source/php4AppUnit.pas index b2b78c1..5e6feee 100644 --- a/Source/php4AppUnit.pas +++ b/Source/php4AppUnit.pas @@ -217,10 +217,6 @@ procedure PrepareResult(RequestID : integer; TSRMLS_D : pointer); data: ^ppzval; cnt : integer; InfoBlock : TPHPInfoBlock; - {$IFDEF PHP5} - EG : pzend_executor_globals; - {$ENDIF} - begin InfoBlock := TPHPInfoBlock(RequestID); ht := GetSymbolsTable; @@ -713,7 +709,7 @@ procedure StopEngine; sapi_shutdown; {$IF not Defined(PHP550) and not Defined(PHP560)} tsrm_shutdown(); - {$ENDIF} + {$ifend} except end; end; diff --git a/Source/php4Applications/PHP 4.4.6/php4App.dll b/Source/php4Applications/PHP 4.4.6/php4App.dll deleted file mode 100644 index 9ed7aae13e758078b2a32fe309d14496fc7ee2de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130560 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

>OxHsW$3p@T_rJw-hiSR#Zqvi2Cr!^_ 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 diff --git a/Source/php4Applications/PHP 5.3.0/php4App.dll b/Source/php4Applications/PHP 5.3.0/php4App.dll deleted file mode 100644 index 2efba3b2800a05157f96211c84dacaadaa3fff8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135168 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

=dUG|zK|&3VZN*+_(L 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 diff --git a/Source/php4Applications/PHP511/php4App.dll b/Source/php4Applications/PHP511/php4App.dll deleted file mode 100644 index d02c89182caa73741870896bf47ab1900f9fb6cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119808 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%0Dk^9FTI~Gi_kD7tVVy%hlAQ z_!-`F5{e%|JRJd;8$kYRb*&Z1Kb1ZNjEN4>`99Q7S<^pz9L0aqhxyyj}PI$1owDxM$E zp35DcF@ztHeQFSTkNOrC`=rqQ;`t`+d8PIo$>yH3iN3DkzJ?f@L+U#TFa-f@G_klB z8V~ijxD0FVGLbID;&QGe!f`~TtYgO}JlVdH*}gg9MLDXwMWj~j5p}Nw`yV*Kq;Tnm zTm2c|Nu_Kp$2`PR#(s`?d*>)`H`?Ad(3?xVZ7|+SQ;9WT^m0;&r^PUZ(llcG1j`4O zqr420qqgx@>G=Y_ptNd2PoqpQIlj!*Owv;UsS)Q;q-#R=X)h_Spq0#CbTSU?1yH2U z^yL=e#ENM}s+;eG@J&T(ny+nJfX1Q3zy%!eJbQlhFln%3-&b{lg#aTMA^s^ z{kBffF571l1)+lO71Vz!YGhpa+M*z-5u zS__~U;57-5DFIwMz%9QO-~a;zBmj5z&r$#3Gop^eH|;E;9xS2DDCwb3;6X4EzOx0Z zlt6!DAZ+DgQb~|}Xy!>i>X=GTNoBPJ_?XWqTPUrX<^`|_Mk;zTy=nC(&r2-w)X1Qw z)K(V7RXDF;5-0M=_0ScFt$9&hepL8)(!8DOnBhB^@bMD9EyFh})TaHCet$`S{)v*` zbn@UL1`MYNkU`)K6H|i3^g0sQ?sJOA%Q~iua@0%o$$+>_jp~ni8C|2Ks(gS~<|-lN zXFT~%;hST}bL-LZ)MKW`Q8R-kp7_vth=)lAJ%=UlsuP_;T>$5(Z}}`akxF^Ju5`m0 zJ@f7Icfw7%{2g#R0OeF`M6#?9gz4xikg$$Iq@k#EP`0_eGB^_~mN)YWH+D&xX48rP_B80n%{4idd1+|G&i z$zf$wT{N-c>16olJdT4khcHb%gvIUD+rq0nZb*?52xHtue(~KcLDAHxa(4gGL#d(6d5pqdVG;N+?R2r%GW;A?dz18>~n{^ z!fSl^Z25&{d)O83hTphwnk)*z+JucFp#|IN2Fo-ilh}@f-RW>YCt1x}hcuBHmeyZS zmohGi4<`xD#5y2mco-O;FYC&zjEM+tV(;6G88AOwsM2UMgzOXzDz0Xu<-3d#RiehR z7-19b|zE>c39(Hx0cU{V{_*&S`c+DJOK}fCYmmNw&~I*$Up<~8(Ys( zC3T{zWXhhBDb*!YP&u$N6B(34Zziv^DhKNE0Sx8s#^3^f_hT-@^Es~XUD|d_Lp@pQ z`7gN=6{K*$&Hl^KW*{-yhau>xmT{YQBe%z~dI4@EyFJyxoW1I)_oeQrM-dH6Fg?(j z+NaD10#w#%@e&5WDp_MHu}9U8s?O`Ad+ zb^u1+QqSjjtH)cNvF-MU|9F%;Z9clw-~RAv<_Y1y)Zs06#>!r>YvGAGu)+_huaKij z01t#06c&6Qf7d*9DVAqL#iwlTT#Yf_Gc}vAwJE^(vsp7jz zyFIQ4e2Vi#sWo_W1Ecpt!;m2d)F+Bk|GnMVPDgGLt?njzFy>bgI_Yn;1eSTemljvX zN+|y`aUsSg8p1PX%+TWiwYFxWF2XcFeXzyq$V{Wm1QdB-7!q+_J^j?RX7f82OS652Z# zMKJcU+Iu(c9lZweKG%5X%qVkGFqIBAzmkOd=KT6Wg0#-B55!ITxA?Wg_;>Q_EHQZNMKGJ5q__JZNl$!uw%41JX-hAUy{lJ&F}fEkJ*Aspp_JQYvEOXhUEu zvgFa!xM(e!xgybRGEV@`VEK$*XTm z@-d8vsIYFTv8a4_wz><&HwmN4cn_MPr+jn(#CyGW+a{;?0of{BdxybH?-NnC)oAt? zWcs6{|6!Aw#GYi$+`u5onbn3{EN*5 z00#5H{wRzbw?8y10sO+*CK4u}VSakW(anApX>)}A?T1PJs}BkJsGhb?#pfcLpEaC( zz@#k}E<&Z&>863~?ew&jCEIduRCgmjN{ezahrQrsdpqVZNpe`HbJ$gK$cdOD$zjU9 zn~-yRk|(*S{GbfbVxPhI&1mDog#}@kZ)Eslsd>^r%DlqYBQwL70b7)Y$>`{^@h3K^ zuTU76H$~3X8VDNhrkk@6Z|H~@yb&6Qlz_8Np8;A!!{i-BFVQyZ-(1R=p)7Cd!~qaY z0%N`7=mrBWWy6z$*_K9io=ysVx;RfH^d%U#Jrfxxv7@6nM7wDlm5(|>j31me>1o_P z0PgBXQY$2eIHR?FQ1d{E4D>N(UNB16g@HyfP`M6Nc`T)3uo-n+r;dVr1OK-e^rzyeL(GuA8 z;uJ)M2y|_K;IEXfDJ!hnjvP@&!EzVni*sCjr`>ilUaWZ>V$A(a{NV;Xro)NQopI0+ zbspWor1Q9x*7PYC?^Ul%JlpA3%8iP=svVqi$crVQVG{IuI2mt!Bp}{`#f<31$?De=A!gM>gT>rRYa73W zQJ>(0xU#;RvLH+K=8mQ|8tAQ$~Y+Na9QP@wPTn`*7hQ__lH!f>zDc{QlH$$szJ>3I6*tTo27@FAEh;2V z{pmfX98oLLr0Q8g-A-pC3ydtCh|F;Saz^RoXQ1tF zycZ*KHx)87^yxJ>brAEJSi6OmRwJq#61H4tMP$Cyt6sN#&5F-UeHN2j5j6yuSFOiy z_>x&!LC+R%XO9`aH%Tu5V!9j{BR1WY3b`Js%mI`S+st(UA5fA3j_ zOpcCyvV(PVsBUT{bRtTpumDTuQq;5XWS^G`5u;+!<39~D#?WBJmg$U*&GHUpL{Hn( z#NfuQqooY4d6%qgKvYOj^+alRovlI;cvi1Li&cc4TW)ljA?3`Lq{w<6`}?(sMadHo zDrdfeUM#1GsPMDSe0=~>#==L?_4SP_nKM#!vfdd``(U=FGW=2Rqp3}7&$>J~Jz zv0Pq`4B5GS38Ar&M~^K3_z<&Nfl7ywWt;1NXi1&Psv>Pv5SB#xG-Hl>r^JHxTrfnQ-TM4bMdM#uXkRf6&QfadYJ#yHRZ>2po1fzfv zKNcnc#Nh#rf#kQk0>pL()zi^HY(>Mu(VU*hG+KsAd>G4RNifShW((G>%{ELF7vvCFDvbeZ$L@*fYNmH zbUtULo3LQ5KZrDyIvXY45CAQzolqOWDOXKG5LObwqKSkq1ji}LnkUs#<`^lfw_9tL z^M5v5<;(#aAJ!?Lc(E_*gD9AVCZvbpFp=QA0HxB46LbFpstXjdJgxB&^m}j80~a} z3^@eKOZM>Ow>hrR&8QaE7-no;mHx;K+?RESv>LD?eg`Tz>R^L<6ODpy`I!Ge$8242 z18xO5&x0J*36Yw5&M`}tqRTo-^(N~i)f@Fms;xa~fI#8{@|W+v@tW*auWo|!FQ}vDPbuDx8frBBe~_XVV|`wkci`ySqi~c+l1qv= z!L_oO6)P!NOyYv88DLuywR$6@Bw$cxLj7YG0iB;M04j^i@GJ6J{F=O%>-R`W@h*9< z!Y^WGGT56wxSCujoy)8|&q3WF-yyWAw?ImM{#mMbc$!7rQaDx?FUK!*b7M*I3VC0J zU#SSiYvg?`-GjyS%o?$pOfT)vBt}URe7BPLi%!C>7jauqFQk~%BSETK(j(tyspt8Q zMy&|)D(JI=WB*AS-$^;LU{Dww5-6=-sX|wAZCR zgxl>>AfvPg9<`}hl3F@j@WvN_FOWw!yp%Pd0Sk0aN2De3Wxe1S=&TS|NxU`JGMLG_ zeBGoqugpr0lLtA$9cP}>v1l+!pcmf73m??NMXanb`cST^LY+L2HhCaj@<6KOfzF@!v(Yx}F6Qqluqr4|UiC4=P}Y_e=fh?FYZze<6wl>jxjg##xC@U(gXxCh^+53g zU_D{Sbur=ceVqVVpd?4qh8S?E(> zH1AM+Sk(JbLFS`9J%qVF*{nm`jM^9`t!6#|8`q$Hed&H=2;)YoH&_rGg8Z#8Cl~?c z1a{1~wPshRfoPGdR%RzL2-#SGP49nWL=^fL)dp>QRKA+hwVBM;vTuL8AR{4U?IN%s z92Y+0H)CuxW324-`zL{mh||jbm5w1*G#jLC5f&SA#XIM>odqyIRoj8;7ntF?z_8ms z8ykjN_)oMjwoKI7=7&(#>erUAxlH01xJRM7!sla45J_9LmNsmLs9Gp#D=rAYyW(U! z4FM34zf<4+7a07U--s$jM&zQZAEJWbAsP%;G;ner1E5M)5n#kgw@0m2DnalnHElu`8_q=&+fxoQqde`S?nYuv(e?z)sm%?2uFAA$~Gei$7}mZxF9 zB_l2APPw07H6T$iy|u-o;NwCqlC7=d#lnC_D-&3jgHE7if_dOKGZO7@5xuadIJdUm zpcZuh2K}_vtQ0XkjLk=GK{v4v>2C~UZb$}wk@J{Nz@7ryR`RMp!YeD0c6QcbGp=UE zoCzyG#kaV$#HZkTpd zWQ_q%M*uHkR9*0Jo$7%Cv>Ft!q)|1&kcQy)sUE5q{Qq_v!AALIUH)7sw1k6WY&lYv za9R^_3A$4IP?x{P{8BHg{_-eGSwK*?*M$+`vFHf(;ier?_31Bc06Cl(kJD%LeqErM z`*uZSY6GKA>hG9p#Am#|i{Xu%M_>|_RgT>kRVgXxFBDP%pok?;19R%$`wJco~r{>2}{;yP?R6-_R{m}T?u?T5EN=zrQ-2kItV zyE|zYM%UYc@w=0_K%*VYvLn7Yat}^Lec*GRjtSi+{ zBnR_y-X7yGt*Z?OUteV(1N6~bjbmI+_V#IswKgfcl&cnw?`hOn7KJKqOENfW( zfT&bC<}a=2lhhmE0DAp#k!<$z`@OwA4QW7Ss8{P)kLt@3L65otwyR9#r0&E>dw1hy z4ZV02<}jYaz~2*Y_>>tO@sw^n%@pUGFjM=A&FFZw|VL1T;t_B@lsVLs~LVR)IFS1xkuE)a^GdL z-_ry+N9fvx><`8WAj~{`X%XE%8L=uC(%_dC(d~JB{XxQ)oA76u@Zanw7s?U-SA6k+ z@LBjs)%Zz5Ye4Q-h@aQs=VR?hzUJ^T(zS?`X*6zM!q*^PG2GJRkLInydy_v>)&tDY zL-GTPY{zxRv6t=G9gYwJu4G`6n~>xa@4?mX5hWrBNZZ~KKGX|~$eW1n3U0tlMQ9#u z^6=-Z6iB7n9%OA0V$KCKF0jV(nZ_LaWz5LTaE|-K%5hDb6B|FBYo2Lw<>6wy^pl4d zJ}2Qh!z=`~-uaqg{3hUj*_=7zmo(t{vib8}u1!0!|LY0kb8frEmpyHM-jI3orrpgd z#y`fxyS)`G?38^wF@Dxz{OH?f_-D@?d0X!7Y)(kjMmTV?!m?%dqUA1Kg>Db~quP!@ zXQCD($OAo5oH&U`%fbH*hu3Ac7Rs$XvIQ;1!3~^zh^X-r$V$_SmxJEzV0dPHf}Rd6 z3YGCWQh;j6N>n)*Q$wS*{3V3R!q6AYRM5i`3?>#rF9gOW7UkcY=)zg>4hToMKy?Mv z9^#PI$i%?-2NO%;Ll;Q8%>pKaoUSe4!0>yq`Pn{dyuJ8vQxx()B+b3}CNhw-cgMG< zb--fMeJQVWN_pj>4D=!UVLg@jT@dH;EyUW+mLA8(9pw|j6cd}f(wU~wi0K8 z(`S)qUt(x93U`@j??s*uF7kYMk>?}5ltLCBVPO%C?dFULrad@tryq+mV@!b$?t%Ax zV6-Ype9-AqH0WNJ?@T8GPGR)V!RNFGONJ)OW`cDo#S>|dcCOi(#j;e{G?BQ!UWqqN z>QK){>)aN#0Ml^%FdCCwT4y&KTRHNUrA@@57zA^}8VupyXqfB#oKa&arlHak!Qumq zki-Q#X6XTlhFj5U+@+{(8pE9f9d|k4t{O%hFo8;jVm!G~&GtKn)srgqAjzUXu>rUP z9d-S!mQ^2U=ZYnhr22#PLYZakYCmJbr&V)HOn2^g~V~?qf z$=iT*)xB#-w8ZZ_DQ^oP1o5i*fYTPs+QvI*NYAf6?W^2P7 z?$CJHwGb8%&H%%(2&E&oezs9vhKW|JEIhKzbL1jVQ;(EbFJJ6Xdym1WoK*#3S8jv= z4IH9{&_^kzAO*+9f*ukjgmMT`8mNmsG(P-8S>V$$)A0moFqvF6;4jyDRd`xC!5|Bo=?d2$~$)_e#NNx$FD zh5q>W4+w*^k6Ct$WRC^Vx40m}S6@ff?k`Lp0-YE}lPt^jC7AzhzJa^Kw?=C!s`56w zc;6!n{)q7_+;?XsQ&YgMYr?-v&0oz}qa{OAY3lJ`O|_sj@!u8cbEGvo8`9f|zM6Q? zfSZ|Z+k%vuO^`Y54Jvb(`>h z6zvknobUpXfb}vEh@)o_)f*IP4{urY+z?dZ!@)ddfz75G`7e?(+A-1La*uX9#^r z(ut}+v&MjsT)D$eNOt*8h{aZc*qpM04{sf5{V0(%Hf6B^N6?Ujd|E&Tm)Tav=fU98iW8z*ZbW z;v~vKGrl7b8#XeZ1JYoF+L)(V#(qj86if#6UIXrB7`;}wbNZkbcTP9f;64@iYTQS` zy$bhrxR>Kz4u561@51|L-1p(W5%)se*Wtbt_cge0MEDiBFTwj#+-vb(h`Ss21-M6m z&&6HgJrDOP+^6Ec3iw3aH{sojdl~N8xMu;+!aWW50k}8d-WT`baPNhCHR#H~eFNUR z;=Tgz>&o!5u489T1ubH$q;CZ=uUWey8 z<7X|N2bt$J#7#V_@LXv8ufTJod0vj^MB{%co?kQmm*9D=@l%NBTH_}l&(#K>NIwQ2 zkLTg$8M=!@3<>XAMqyJ@8Z7XX;_-3V=`LeGO5tl%wX*0=D50A%Yp3qSx@z??h9Jte zV01*i1Z$?Oj8EIpp_9oJ^*AvZbXd(N>7@twBt7uOe3DM}U3`+h^Bg|0=c%UiiQP;! ziBFk$+9sXM&Rip*`u+*v*suK28Stg!jnVw1LQ3mIl43m1~IncS3;3$G!grqgk1Dp@g?jN@Y z%PT^&Z$aCH<3yW!rbp0A!+Dim%{|TBQ{|3w8nd_{mEA{n?xJy7uEKCP3}AmBcW2t7IK-SyJM@fnASu%o+nVJ)F z76uf!BKG`wZ07NprXDDTm0G(9A6&U0rl82qcn8G8nc%x`XD{GZG_0~577A%+D(S^| zHw|M+bHVY`+zv4@X&&D4TWKybX(maUhi*Prn)Sy|b3`o7Yko7$gC@-fVLDZWijJA) z)c23e+xKY8Yu>(zWt*+@_GZLG-kvIHrW`ZPy~j`UhFF>(VX&_CG(R- zqj`%Z*08AA&gAU<&3yL7_z-32TNDwrbTH?z+P$ttny^RXe(YWj`NEb(wm?lrqzJ5f z2?5Llkq2RSY3)@jy$MvW>B19dW}-&OVWn;~yI@sB0( zM)eHL{EE<{=z-eOoM!FYuI0H!+TIUhtZ0#ThMhKs@UFx77=nTT^$%am)UQP(EbsFq z_0yZD?x;&>BAogDwV{}199yfVUQ|BI)`UfWU=h0QD2$iB= zYUe#w+OlNRhPll>(cE2Do96r;S~`XD5vA{Rv{h)*xQxfE-d)NTO?sLBHmCvOPbNA{ zKOt{W4I0-c#9K6HdnOvzvQdN{L0dR!eGe$Hob5A+P9<6_Xs;NWM-);AznOwApx?Pf zCkfg&hAtpFOwj%@w25jTcz`>`ZsmQ*ZTf!AJe|hG+wlPRVRPnc z|NTeIyM4|$ADxMhZTUW+x%=>GzL_?{c<#2}B>d3ZZ=Y==a36}Z+4w#T%i0;g_0D*l z?+i!X$wti&X6eOKO-cFSmfck4!=WPd%T!cTSR6S2lqY{R2JjPbHD$<4s2cMW`sqD9 zEk=m@ajn4xd(i$X*H0s!0M5Z}{sqd@Kgn`E2jsW@Cc>Sj-0{vd%Rd6+rU`y=W#P)e zH5nJSNOR@?n&sMpD+_*RpRcdEcpp!9U{O4G8b8cG-*@{Q@QbJNQ5sgvMcQp!aUji8 zVOXL^W4zCIQD-RN$NHl?^O8Rc%>F~`XYg8QNOtj{|D=>B`tvE?}DwwVj&&YbQuMU(Z#vH3;!-eFeo>Hc*cZ93>%u_f!q zP2d-PSb>jSXzBw03)C=`fwi$z>H`((j_w?K<%t0@e}q}GN;O3=uC}W5MCF6lS#ex- zy9a$k6+us3ueueQhLEQIPMU@y1%4LFIW3hdg!Lz3;TvS7J!sSUeaJycv~(BqyGG*X zL62+EVyj2@AnqE3wUy$-5_eREp%yDbpTXceUVi(0**w3CyB(e1If5OX-yRr_QHgeb zXRr*$kfz~Inl3^Lc7E>^!iJNumifKcK}oc99rL^K9; zo7`e*G7N>#J@`4#4L?47b8u7WR=#$?Yl_(cE?zIt!iHE$2vUpCMQS9bvhfi5BRs1C zF!n-A@DzmPZXwtHeYcgfOti!5{eL27Cm?5`8|c50{yApFrT)p}#AD*W5hX8NUQhp@ zBfFvV#aE=1L$qpv_=>>S3dUMMUuE>=7GDjeb@Vk>d^NyVgubq&uZQSsKM3YmCXGxn zQ+(CK*Dmt@Li(CbU$2QTRob7v+K4X&U%k+ts1Ecsg1-JDzUoRx(O2yPt4>r=M!tR< zzB1q|JU^IITk58l*TqXMNoPbm>E+jJ;l*284x%}NT~+DX(*gU-RC;iLQO+(@&f(>V z*Ru=zm0;&uRKzOz>ZQDNBV)W(Vk}3DG;35DV|)fN+QL)w6$P_ge;4)H6t3y0mDyKS zjhBkhV-t}4=Ta%58_?rSQtMGLur-DTUOAILu970#+cUjU9Vdmee0;w)1sdpd@+p&{`up|;@+Ocu? z_-pYF7t#of-;tP*wgacd4qR2_LYFM%@txV2$4e|OFZe33^LjlOGj76*aR}11WHG() z6S?I(5*hmAfZv_4wo+p9y9ciQGu;=Ri8VPGUKnj{gRwgd?o}m zu$rNM+Lh%yNqfS+z9{$NM)EPmhBOcm7}1mzbH~TPqx`+9_|yDbhxKa;zAV|OEGZ^I z0r|zpf8O8~aroAi@p)B$%vvHccqm|)%a?>X1h3}E|VE&gi54>u_xA1r?JmRn)PWFtOFeXrwvbA4s(UG+I9mlC9biWGj;mNs+ zkKm($l-%73sN2Kb>RqZD>_&eiE)Mfa6-}L2p;HyUIQLMcD+8Z`RH*()4By)Ag`Ru2 ztIGvylLPMu5_<&PO=Eh5lgFuZ5cxQD3VyG{alR{Z525?cT}wc0g~E_&Q^g9eI)M8` z>e>H)$!9INPWcQ{1_GaGIsIu^OhUT=PuZH#Og863HYt@I1H(ifS#;rccqx%$(uH+g zNo3N2V*bV?QG`G}{T)i{QM4P)BvHHlg>H-Crh^6?lE|oRNemWK;vq?_2Hsi8YBT}{ z8j64NC&^x(T5{AiBGas9D6ixUjh0};ZM*vXK0)R;$rR*KL8)6_B(DWoQ?2Sj^*g^X zM|GsfI8RXjp~H)C&=m=dhj?gO&GMkA|AJf~V*ko;r*W3F%bL&v1TxYdC|A!@*w7A7 zxONN;x7P=r;g#RDnN!j|x+@hwm`6o;mr|!jSNi_sv!*}N{ZbD5snKdB}!>7aC zs17(fMV&-NbUj>ABTmXK8OWn#;DV~LmQ`a&?xEeN8mZf6hq7FO50S=;tXREKLw2j@ zJ4+2Y5g()e8?}Uk4_%wa^$I5=>9$O|@@G^N(9LtW1D^yM1|IZXBGmfN&OOvdh^|zF zL3ALYq)lL0V#$a^3f2gBU|4d=h-8S_`>2R%U@qg3`cwlFy5GQ3#=1bvpy=V%(p2a? zjC@q*!t%-8-UfOdNy{k}Vnf3QLb$J{92Ks*S-7??b$YXKdS4e!JniGb(o zCX~()J#A6Y0b_lQD2!K`tAPGVAGSAM?jTNDbU_y6` zy{}^SzGduRUvFgw;l0X(c|hjzQX8J-HcTEz52g7ghbdc6%Efl=DsqTM1CQ!d9MOIl z?7;HlZ78ip+tFxXjtt~-JyfOo(y7j~kN_f7+{3vdbP0)#eU5vRI4W(HTsfIO(j3{5 zyfmOdAooJ`16X8Cs^74w4!qCE0}xZ(n>w$77;_7yO0@|z+2+q%hKPYe#0#TIgjOeJ zogL18j6!NWQERXrMS-?a@enI4gO_zXW4OLrB^wfkd}r}fc4i2?gI*D4KUgQY)B~JQ zPmXt#TsHh80#yc)s|cMhB&59JIc(Wn$m_NfKrZ zH4)dHxWK@b<6znjL!~Pm?1oh16YX3a=#X0$hrY@WDC$ZaBTR$tP5SE&e-Q7KH=%a- z8xgNm8|cJ(%jF+%sS=k)M81qJ2cV}v9_GeW!lyWlh7&>k)@b3cRJYK>Tk!Ci!$X7W zBpz74+4Qgh9-8JSH_gW>7xn6G>JE{>8*|`zpTkk9I&ox|b|@WZ!I9+&vK%t}{Pm2X z4xUb>Cl5X4)TV3&?fWErEu7-%)LWePrMv;BAFx25+r(6=m&U>=MVx90>y77#?HG57bM9Rn>64k*=?@xJ^d)sM+GU2aZGO_?Qj~ z4O6LJMokC>C7CL;A^#PstKiU;K7I5FTl8C3oUd(e(?5MDhI^qP$GO$dW8j=4;n>@_ zm(4W#9hIt<4)|u0W=~p6|o89#&R%??9J<;!>;C+(qJIblw?osR(_41ybLtTkxRKc{puX#<(nnciBO!*%Z|={&TH5 zPPO4m4wAUBBrc}ohKOUm8i!`1 zB6P7hI(3gzzdiq%Ch{?xNUh(V`ROSARu4YeY<-l?g$d#Orv%jS%WVyn=3i0 z(ist(Oc= z;+lmkfNK-3w{ac7^~z6KuK(aVg6Ai3x88}Jf~!BSYjDlNwGTwe?6FR}69xL+Uih`(A57OzNXbVw~Pl*fF<6U(57%t7#W7>lZ8i9ui^iT#5 z&DG<<74*;m4;RzJU*W;h8ujYw2pwslC6e}g9F9u8C5{S?->^aA0SOb(0yxTXC1cbY zu}&1&KP3p2rLWN2f;QexF7o?m@#;jphs=hr#C&DuUnEhzH3B ztr4k7y-|j%LbytXJFZ6Tbtub~1kvP`kLQPRy^N~{*I``U8naxN;9#TXdolR1;Ml5Hujc*3UtsHKdbURujzNU8H&)`&=?daub zjaa5Oh!-l&1I%-CjkrZk`X6JU!hDI^rnyGktmcXHW;m~+vr{8p&*-#9+{D~KBj$^5 z>d##I)*4aNB{bp#cQYlb%P9=0HKM3XXvBHqNOhS-N39V>T_V~XaiqFDi;gWc;#zfv zFp3&80q#zXxJD(38@1&(AStF1?|=wVBd&s2a8KRCK;^JQ{jY!?e zKC0H8#qeM^dgUnRpl5~d0$l+Y=;`fARDzde^JSA(kLQU?nbwHu;!>r14jy;U>!uIU5IaCdwo3M^fekS4cBS$g7^pn? z{?0RJuJ3M;#dox3uB-ie{RZE;l3?7NX|reFa+?p2;)fc3j)u_HqwffLmVD;jKF^1Y0TztB7z!dn-G1B6PK-1nic9+A4!yQ`7bih5zyl>6qmjK)m_>B%7U5kS zJJ45yNbW=CFtRl;D2HZvgR8mdpPg5i3Jrkl6!U!>IK4=VTJnVeS96CE$oogMWO@aK z;FPVqwUqsGC){)%I?G%}C-}S=Liy9~4153zvUPa5knP?WHDqoN2-v8!+CGw-Gz4B(52ll!ijX?8=GYFYqS6vhzF}A$45k zh^r#ho>~4cCmbLn3WkM?+s?{3;17XcFj|3rWE<5LmJZ4=4H`7ji;=mHtdY6&Fb4_m zMlczaLmXJ2i_n1|v>907&K>xtMBnM?n=_tjctkv@*CGxG2ga>9k|A+i3@31&>wIPZ zU6pBQL7W(;xE91T1U(p${RmbMLJfe?hNjLPOdGp+=WOIR<(1*_A2J5BZ!W^*j0xyW z?BO_LpjT5)GE(o9vNf@X&P7Em{g+V!*G)lqd%u}Rwc}FjV=c|HA8*v`|KfeHEJ73fI*b7}|b+~)iN1k%xrm`cvC7)Z{iykdWxH|`SWCsp5}?D!SV zihkuXPKm5aN+sCHmN{IJyF1S9+8kG*`qUyijNzX2rM`cK!6UqbZ%2huA5rwgP3^^_ zb>?mro)XP^RL3(;Va9e1soW8DeUrIAYwpjP`}5|$!rUJ;_lL}VrMa&%_tm(gXholn zm^OPpl?LD0%#5Gsw{-}ZYwedx9y}Lkl|xffIeBn;Ss^osnr~(By^+Y^Qh;jT zI^jw|oOn(e&y)h?YmSo!-Fy6=G!S=(@#FJQCucC`h8FRrw~6H?3b*!nXS;Je+VfAs z_iAbQ77te$p5xJC9cfzE894&dVZ3+dy!l9O=55Fe(`f62NQ7Rb+jiLOY4hjLobTcq z-Qn<;k}^^=eEyIb)8_hS&MQpKa>ez(VD0?+vDGI&_IFpt^MmjG#0th#1LeCMc^KYy zh-)@3=id!@$2`7k1Cl+K+?RoR=4onI_&*u(oR4*v-Sxd!I=;8Vm47Du;PUnWpL*gO zzq9duVK00~iLgDo;9E^x);i|QZumwMVX98U_lT$C`^*gOmXG^pT*+r3EUv<{@Qoj? zO^B0oJuYw)f5A{l_W?D?Rrg@U1Vd8JB?fxR~Bv+&hlXo_5;|OM?c=qmFdDwm&-0 zy@9cv8~}gEN;mUTq=9_?R=QfI;}TTs;iMveM(T1|3AQr7GNu)VVd~X z;!0E#QL#9+f|0dmaV4twqvCSAd>)C*&3$asj-t%X1zYl=U3`n!#3egM85oXwFFd!) z_1`Esv#pC1>WE&kLcI*nQmELS1ltt2y(%4prGbvrFj#Fl0D`4>8iah>#*$*Gzl|Dz zr2v&#sc{Hp3cnnw998%hEe+}in+PkR?i@QXoa~PWMvhV`F3&$Z3rn=IZzQXYaX_kV z!8W!1954Wz8IEr7f32O=KLEw{4=KT0Ok~cY%-TFL`+!I`pG3J>vgE{jf+`Cy+GX~K zj8R9Kxw08E=0e4RTog68zST+*DJgdC6HK(m~?|!fw zK7(F}mF<V91S zP1)Eb!-Ocv6#CqK095Vx5~sgvVQmbikyOgol*ZujHHm8ZsTlg@21XrUz#d;xze%=5 zbHI~m+N{`i{yFL^aCnjzS;Jl~jzbGZa}jr6HjZaMiqXhZPy#Gb-QJipF6>=-+0$JG z!`S-np#j9Jhps{pOlXaclu9FuH50L6n@8ZA)2^YuEZ};Hc{lY^^6rdwi!<6gozX6|4m6x9{4ip(kek#E6bq9GG8V-7k_8H>_ z1^wPu=RjC6=RrU2Y`FEQUexW%66{=TX$^HTDmL7J$2Q1?o25uX`cQvD%M8-g*X*2+vv)y42QAqT{)zbPwo5&7wsViDC(m%U@t2#FTgaU>O)yeqsMpE&vO#V`XG}8N#Sf z&tpDuAOa(;ELQmKU ziGvCEp%ZA@DU*HX;N{b;?6c|GdcKrv?i(O90YZau=m98ac|V8}!V1IOH;y!^Z}2P) zZZ~Y=nYR`(BXm<={OFm#Tfs(K;O>VrGx<{=W>TSOvCxBcNAifK-x@d6drzCK6C5%H zTor>Fr@<41-5wM0M^Iy9avKM~G2U4Ei1JEHjP)Ek$W{|mE$wF7&W3Te>}d5wLu~-f z0qjSKW*yN$xuB78wA(l%NIq4Q5~9SlLl51qkcwX^5v@l*(n1@xSqRf;pu;q>PdsKC z*oq1}K$Fl$Z7fzH@$2X^$k^&-TA=ee%bjfDCe?#w}@GhfWXa1ghQCS-Ie+cG?NlxLhQk7w4^rLs5U zvaBR|P6Cl=a>&`SZuJM+a`XtZ93IVi0L*NbO?(ZKWX`?;2^FEIP`0QeT0PZbQrpP9 z)$S}v#Xem4ga)OASRj!wX;Mu+8KXCOC|Z!=^8KOG(*$4K^dXRyVRHT2X=2yI?hxFY zArFme1(N2OrcGgVO5mi+4qKaIE&*o^IodebK2hBydh@C=5`)Zn^R}FWJt5SeSYrcK z+c#hUhvbQcLh5y0r>Zq$D75uWewwmV;kQU~C2gJL%C7f%jTBA^sMU=Fi^zA1C1gCF zfhlRJuLmvih%M{<*f_tQX89i>d&=y~8pKzYwtPeO>aagO)<;3&WnK+sSvygkik8Zs zEZc-C|G#)Hgk4a7Lc;t+i{nG;Jaj@TLWj{l@?7LYB5iD|{@-n}rL@KVwi32j5Uoy3 z=eA~xorXaz)5Zzis?AUY!6T|JL}&?$z$UjR{L&J;5n8VzG=`K~XDNw2qT~!H)$$Ce zWQ@64bvUZ-MZ-g;e;Z4fXO>%*Gk7MC?CPNfu}&J7!pE^-T$OG_A;UCC^vN@=Exbp- zoPjQ3GVF66r46$4@&l4*2DxsiB2!|%FfnuzH*X6Pr>Zc+!oj$^reO$ClpK%tm zj+v#kj*Oz=YgEe+l!<)X5msU~+mmGWG`ZRkCvdAp>)55#Cv~7AH$cQ9Y9YiWjD7Ls z+)_N-6t5Se>eZLfc@?4eQSqF1u(36a3?;uB(tTlNOjCb|XKMM~G@nC*wXe2hy@UNDxZRwgJrETfO8XJOT=EmO!2Y{p}{ zcB>@Kh-!fTs|f8sl^JHuvilb0qC?8%G}C>t>f8E+0B()kO+>aR9(Z$t9jWMFo2V-ecfB z@R8uz6NdxJ**UNAKTC2)*JGcabnuNY2wbO=PFYS((JXm19ac{a$=Blh(4vAWNukQ5 z0CiSnNlY4-uwyyq=mzyh3S-Bar2s(KuA+in5^R?Vwo5)K)q|mPS6ghRr z=KmSsBfch8bD{lkVydnU_u-`?l#`Ca_)2Pnu>q{Q?=&J`jTMAlsV5rp^RXi&WVW?4 zL3qjs>N(2V)Ovo4QeU()ej6lmk@}c6H~PF0^$|3iP3=yhR;ir;D?(ek+towcdq>$D z9*p2OmlDcDKNN^H=wewGh6=2y)E#lCq5d%QQjA4G@d05mN=6}O*7X5GNpGP9 z3VWn{zJsPmJqd|)(Zos`FU{0Z-}E5ht)2(rl;n>%(BSF5ls=_Y_^J_A2s=2+f~HPVtNb3Z1@jK zv(fTE!bGR(8au-#?^-eFqG}3QgY_THY4^dA(v&K+#~)35tNjXE1xF?B5RMtKdKQUw zOKhDHY0=U3VWQ6Fh3b3?HA7T=25F?YT;p&Rt8jR@3wm@c&g?B*H-;2>` zle55%{bL~^qV7ZY7yIAYv0L)d(1ITxOj>GwNIs=cKoxDZC(wcoMysG0&@ZG)R*#=yf-vn^(^ls95+Glizqi83d{!6Njb+5Jyhav{2#_&AIKK84*617mwF0;n6Vl;c9C zgs;}zmJ@&QxQy%d+?nlh#CL)pDk#!tG?w8}KdRjzm!}+n8(;-QFj6?6qa1T2kL_cR zF8|Y^GMF2s4H!@6skhj_VB_6cE}nYrF6;Z6JmGXzQsohQ>p;9E&9`zL}GnPf8InSwudbe`HLocYa*^~ONStjC-$^`vjBf&Zx z!7ll5`B&TGyb-Koa>?LzMd;rrHERstgCov~(E}=P6fuLL2DwE4Jmj@5mmP zeV%ip9wssUVw`g){h0caDcDBGF&y+HI;EzmXkpG^9Q`Vuw^z{7?r{!4g^`1DqpBVy zPU~N(6OdP|1;q#u+C5F?d{h!?JW-Eyhb4R>qryCZwt(2e+S%U(66}si6#A(m^v_Pn zneLca_24L5r(Z9da#U7dH;SF^i9TRUznW;(K2Hss*8!q*bvV108t5BJ7f-RTWe>?;j2+JVke<|@St!t zsy2L?6(=95tC1IDL{DLE06gMuN@y4zwgS>(GlfhiVsvFN9u+4IaL0I$K61;JHzR-A z?K00{D|?ClRA9(nBDbFBa8Jir81>`{*7zPgajW@WCEiT)*tf*nKQ`7E4nxM+e5Sj6 zJP|G++tlM!-9YE%ST3RdL_0*sk!}lcuh{6|R~>cXSn_3!4?1VO2I(1hnDCfB`Xp2mFb3|y)iTbA1o9HLrs`MghBE~J{wz|`%BM1 z(K+|02LD$gY?)+ZFtOSsxn3tJClIhw4IG+oW&_jvpq61aFoEflP|OBan`h1j*0|Ne zI6Hb$$2H&g!NJ0Kg#xT+#~Ko$0jBZ4Gpzizi zh}1~!lT`^-sDYbrbIcy|yQm_pND;LIy$3{tLr@r5tfJcAEbNN46Y#-OXwHuO&{6D& zH4jo)*TIL0+}Wy169)<|*AzI?)^p&obX#z{Mf8VN>(PVzC8Mg5PiMATX@5|6z#Nzg zw1^Ts5w-zx7;u9OO2aMMl;egq^&L!JbcQ*C#db=-MVJ)FNx}7tF0xHM)eSQ-Xs~bu zFG~;xgyQi#vA-aQkIV)A_C;> zZ^8SH{nP+OpAJ}ZhCMPQi{5Upt8ZtBq$Dp!F&~ZR~PzMzqhtm=I{o%3RWjXsT2I@XFsgb(bFiv+o|1Vs- zY60^0T$15hzqgl-<|$RIYiSQVOJ0!)b!`He)>gQCP?Iw>m{G0Z;iO|48 z-(DHB!0__kk}0(%Q}$U!^bw`lE+ULhC17>89>vJTIWhRuub53dHU%r>EuQT_9-hkC z8g)Sz)2rrk!k|hMWIi3{!rv6^Ny(usv_}zD4$eutR9ERy9TewGc@VJwR>J#GMX+8F z+nLtM3ZHsiM}6^-uy_36&VhK08q7-Biq9MoSN`Bwddq)h1Ze&fT?He9IW=@2FKMCP z>9o$3wDziYlGff9X;nQf(p=57Ze&{bAT7qo6%`Ss&@9sKSz7#)eN*CNsR$dMLKC34`W|gStDC3!zS>-659KDcx0vj|m(HM{U{6kZFqN0GX7}t$cYyEv_ zCi!4RGz7eBfb3~d*MdN6f$p<5ht5T!nv!9l1nb`*k>UR~ugl=A zCfv7Bdu^x@N=WoJ2hpTR)_4zKkAvn+gF07;mVSdAvg-#~;;?rw$%350bZHvR^BtS~ z@7QFO+hlD*TG;;p#h}SDdP#4oUC1V_(|iblA9P#xMrks{QN7=Uk8zETjE%>rzF2OJ z5gF{?iV7|(OVl)ohuQ`2M(^2uCzSxtSOR1Y49rGP?(k85zQD*MhJSQ)#sk`f3D=G* z`KaWblFINUfveN{T%CGX`;rEA5ego!mwr4izU1Qx=e~oD91}*Q#$BCSQd#oP9ijN> z!6!@JE&4Ly;D#I8ed@2g{>B?jpU4{52zbT%=MjCBLaGPM^ohyabjJ_`H3-|uN#I6l#9mfZxVtzhqhtplMR^Sz$cZ|A&4Ai zzB;yHaW<-?_PAFYhp74qkvMd<%uT?EX++ADp8kVlA|F*x!gFRP42#G6yK*x?q_T{u z@v%`2YYWM|o?3(YP33`*%r?F@xYEKsFtuS*b}ym{pG<_+o_^;NNm5@*(*wzjsBcLo z1hJFWmg;Kwu!V0RsNxjdqz)9lf#_4|$pdX~@vvC#$nMBS<{zEe_#DZAs>IAT{_fbS zngoFTNDhyUYCKx#&|(l~=j1WGAlq#+<9!!~XFBOFixGSZM(jXqf-FhrqIJdfe&K;m z?D1)w;#yofbXOP39rWBUJ)9G{UXAOg{Sk) zGQ$~BHk-R6(q{Dm(q$LyBQ{6$36iqE9UChD_coiKkYpRxeze~ep}lCHuwk@ShiS3V zGE}>y4CRq$a$-dBfN{AR1Q@$Z(}s41{-oGdK0G7ODbHj4M8|XwDrzkLaR%)Re~Cvj z6Xsh9j2T(D%hOwrOWYo96Y6F;S)7n=i|!4H5S(lbJ3lb5AVge9>B%-M{)lCI)W>77}?BG4Fs>I!hYqq6X5|lWu#L5ga{{vd)top)3Lir;A3&@Xgl5kM_USefm!HksL4!Q%?)D;8s#@G4tx~wL=^QQU zi067aZKIa+(|;Ql6A`q$IQtuGAlL}A@r^1jNw)>16n;6W{uT5~Md$-)O08wA{)Dkv zoK0>T!W;V|ua?&172TVf@}h_cMm|sdeE?IV>#N{WG?>3G?5sU`Ft@4JGAf2@}CIKxMY+Zo<=^0?tzu@BNzU| zsu~?}?2fYx5$IU=|C=?e{zqi=zZ%(v0A#0S(}6{Azl|&!dYHb~W2N7ev=9ZA(*sq&4zhzj77C5OA4T){ox@l0E_dgM}QtP!Hg}Og=X&<`cuJD=;2Y zwgwcc4^r{899;`_GsC@yoRrnj%S79AH+Z&7?^@7>^)Ji}cIZHvfdKhd;R?@q``MeL zpV@4BuNgO<45L53XM2VWx8Aw0)Q!f2<$fb0!XMwcF8an{*IaYeNKfp2oM-F=&saOY z8$DM~u>5l$r5i_#9OZ#718>Pk&xjZw8_CDsWh;H_8xIzfZ9Pc`3{vuX+YWAzRF(EE$mE za^>yGLC`i{H68f+>;w4FyVf9MhqimEGsxFOh7(zCkoSr7AhN+AJBaimQf83niDVMlV~|IQ^d(YjkN}bX zL?Q;co5%nniP!3U-ArTplSF0{NuQ*1v69GKBK-}r zn23*v*C4kOSwLilL8cJNC*m{6RYVGjEH}udM3xZQV32c&EG1HAkj_Mw6R9>x0+AI& z>J9Qk8jw{)+}CNEzaX-PNDqVji^y6c!wvE(k#$7!4Du9_4Mdh2xrRs?k;LmYg@cK_Mx?7j`Vc86($^rT5ZOg!xIx+ysUkAo zAU|TjfBhaJc?S84NHviq26>mrULqR|@+OfQBD)OoERlUg>J0J-ky;{AgOm_yAd);; z=i)9R5hCdZnMtIPNTxx?5s4BRV2~k1T&(Ze2DyMpB9X}kIhBZ;$P$BeAd*aEg+VyK zu|Ac^I)i*eB#p=xgM2_FgUBv}R1oPwWUoP9AkvFSok1Qal1Ze|AVDI1i6l?adH)lU z{zNhiato0GMEV=#S|Wpp3^#~}NEVTa2I)s+IFZ=~IfFv(SAu@`{I)nU**~ax= zBAX2oCNiE#xj{ZAGLcBNL3R_FOr+KzFB6$cq`@HTiOeA4zCq{oK_YoXG7Pea$ZR45 z3^IqvTq2_kay=0rkr@UVNn`<$e1rUfNIsDj2I)zpkjO@ZoJ3>^kurnC5m`!Pk3qhN zwX=RXkvfBXMq~vM*Nr+C?+{ruGl6cO1##AlE@ zh-@UX!XP&i*+gWWK}HkVOk|5e1`^pqWRF44B~nIYpFvJ0@*0r_gCr3tCz3c-=j$N8 zkyyWrNLPb=Nu-KMra}HgWDk+y26>%GHIc~%d4|YdBC`$hFp(M}g$CjG80+^DS!)nK zky;{K3^JWa9g!-7j3J_k)EeY+BK1U~204#N1Cg%NbiTS1i4YlJkak2GiHtJHAq@Yo zj}n<`kgtijXf-V`$ooVRiL5Zl4kB(M8w~P1kz^v}26>c7Dv`Yg2@pvmQg4vEiF75> zXpozUq!UTIN#`PmNCuI<1{p@A2a(|hxsXUNA`=aAI+08wc?Ri7q%V;L204swNWB`#>2Kk7{AR-$L@)nUSB4q}7iO6swRR$>~l1*f@UlBesO z-b!RLksbz_L}V(FK?b>k$P6N*4017%JR*|~au$)BatlzNg%R`NR>f;z_{-E z%|!MYY6f9b>(xRx<{z^(JZ4=uR zilSBl1q*If)b7fMTBtQ0GVqbvk6Hgq`^S^gd`EN%0O}nNhYM#K*kc1LdZ@7xtNetLOKlOOhVEK z=`xVx2uUX-afV*6UycD{A;e-J-x4yK5U+uJNC;0zp@D29L?k3^AkPyb6VhNHe*5aK0dje*=uNG2g|22w^yHnmuXfm}t%CbVsez+X(L-$)1Q za@+_y&CGwz{CwKbz+M44dH(7gUE$zXE)p9Vd!aRY(2JI25kP=d1Ep$Nb8w z3&O^ErUfjq;-a$hU`^Oe+gDaygplQ>ohOuPIDy#ifR2)t(9|Kt}N_%5I zf4QF>?j0AdvBi-+7aT<{C^O+EJF(vq0MH|cjUv>RTb!?qN;FBh{B);aR_^`1b&nixl613 z`aLTT+OE>4hb{2af$hN(idW#LV00~s!*F7q5ukt?JsK~Th@K|uQsJ)%R?R_6RFqMp zvLcyaMNwrD9Rg2ypeF3YLF;|J^tKHYRR@TZ3eZqBAsum|Ye| zsjFtxu-xL)G?VHZ4=hzM(?5r*2}U9&X62xMXZ4&_RF0#7V`XFP7U#aPrmSQpxCTtv zt1Vb!{owvu44l~5WO?XeO`lj^_~vz3=b6LXuOc`LBQ{tyyQm6{936WsJ?2+jR5Fu1 z*~pBg$rzfQ>>pMqn)7PIyP~Y_9!+#Q0$!7+`rsWm`GEA^@pj`1bbmu`emae2w&?aWQ6bw(UUv<#7RerytGMkU7Rc zMnxcFO!>+h)08=3b`q^o4u4fu5E6i;$?gkEip}=&gWn;<^ppIJFcn2J{V0neAdSLf z{FhXfg$#XBa1+JzL8_7rr+ezV0@4h6J|UzSE|^tRRYs~t$I!4CI*_77aC?8>GAp% zIMihjSyY;6E0Pq9Q>|QeO>r-G1%zO{zprdoFLy<-cl=`g`xynb5Lxl@OuRA(p%GK% zTya@=b{T}|k?{Cr%&;&o`c0#6p4EY}(r`h!AAh1*>R46T3@i;qL9`v32D&f?!7TCL zSOZpx3k0mp2Srf^)z=57;vdbgzqG1JtHM}`=797~4Anj?3RhNHQpGe?EDGoIAC8&b zT#a%TRZ(w4#uV#%)${{MLW1gTvV<-e^tLcDCP)|)_QoselP+;_jqYXbXvQt7swyHC z93M`%1c4FXl?3$CnIoDoV*tl-Xmorru>_B3IoVK-vmXtK8`nA+Qy{;0`4GUP&JK^&1BR`pEGN&pvUDta_yf zjAav_2Zb|J=!1i~WBHa5n?VfpO4n?K>Nyp~K?pIDgr+_+{aBAy>*X*p!?usswVs0vOiiG_>P* z20amlnf)B^Mhmd7!WiKL;R=`qHDOc7nr^cl$P|M3)ooC!02Dl|ao7{Erit6*Yy`5u ztH@Y}rCL%{5H4}!!SK4 zmtJ}3P=_Ff3if!6mb+J1aP)%K>t(4f3YEp@hj(T0uCtL|VSIY8;YFXL zRNP3fgmgw+`6EwLCF@(+`!Mx(Dx7V11iKsX;%LoqyczSs9=aVqfAbJ1!t$WLR(^*xXdLP7?z zhmZ&%bq4YlAqNOqY#=R!bQ02NAdeH$MaU`xSxQJZAuR@S2O&L#Y%-7#A>6k>+6?4+ zLJ|q-Fpz9Qk_hQB5EmiIgd|t%?UO-B3L(6KoI*${A=w6!NJttXJ_GswJ0R(V)EY=T zAr?ZG8pykZjEYCr6Os{+JVnUpc%+dKJ|4M~5Rs5(Bjqq5G9lXxq?izukUa*HLx`7< zP6Kfhl1WI9fs7_3i;(27-WsP9l1)gufg}-~b z7|1w6<`U9nAUq*;ge2DJbw7)c`GlkyNHQS{3CS>!U;hncF(ImfLs*c8HeQb1u%%naHORxrB?OHP<7voe?&L22r4Gp6B=K9w-sanC6zZDZb2 zps(TSbF_dob==Cuk{X|#s%)0l%3#yAsVT<$|hqajQXP7_H znoxKHiPu8>#lf@aSkpm==^{d6iX!%F9a1u`CT*hO;f|_c-&nzq1z|@(gC=%^2kK$b@g*YjW@bdW8vpz`I_p`uD-%(6IfVTyybI;$X?{`|lehv5OU zZQ|0=^I}YQSa{v9D#)JaQX3r>kL9ArD-QbRV6ZcLp28ZU#z6Ei0$WtMk5S1lORno(_bD6lvx~Otd@!XVvCjM9bE3%oJkg4 zL0QZxa3CBGxh}pKa;BG3 zo??^}MKbpq*;@6zh!h4>Dw?d;%#Kc0f2yC565011dtD+>pSECkxOfRBsne1pzqcL4 zzQ~>&Z1ckBdm}e&(+^9ToV=EH07b5OPoMZ|(X^I~$H7uPk?#=DoYL+ev3KYOmQ2L@ z7QX&)`z9n(lZ<2|XTxm<3(Q3#$Y(9vl{Oka8~6T-c-V2inLd#l-8U7j)0 zT57fh@YCn`_2Z3ib75c4wO-nmi+0qLp);0lPO9Hh|54><{~AK$OEvM(+Oe|&&A?U+Sb$=KMNm9oW~x*qTrZ`vky zNneN_B_9j@8C8FLwh=so+@t9azr`zdpbB&^Z}F-JaKFXtZ7?Ec5}r+ea_CPU{h3aG z^65_@{qdD<8I;X!8JD>42O(kexFl}#xMLDpl5avm$E9Ms-?%jTlTLpuTgHv%P_h;a z^W_Q4pg%JGQ8$nC($3;>ne-|QBA3A*gP|v9d3$UKAnygABQM&lhG8-MWqh!#d)V;1X!k01)DA(m zZ-TA?{mHnJo9JA_O&@$fVWubH^X4edVwPPygvTCQ?HWPnHE2-*`=A8P<6A z2bWCV86W8?7HMY=I~JCe1Sj0wfiL+ibxPL_4=*am7g{HAMrkMs!1HMbMzmpy8d0_a0yRe5X8ZZ?-NGGYX zt#C`y7xJwduXMqCTYP>wV%~F59&8ZaI(X8$M@{@@{0A+igV ztly%`5ggXSakQ-tJU(yJHYRj&=szuG-ja-JQ&m^rYBHwT2-CpI3l7yB`#QF9AKH5f zTxiGok0a-7M#|T1gPs{OZ+~L_88>jZZ{#5MQPi%S$QN6&oqJQV7x7TYLwkp_cs+=> zAB_*~(y|pfMb3JY))i|~NK;MjS-XR<*C=5GXeY<-;4}ol=a_od9v~o}W!n?Y7TNVg z{)AA(H#w0xdcN%5kNd0p>#;WKkAnU2z4QD&vv+bKnPa`vi9FFeEnRe-u!Fi5UEYZ< z$F|))y*sU~Pp2VFPNaPc3c-5oQEUnCueSm(B5h*wU50{vAJ>h0H?9MFMtb!f8j_tQ zt9tZxW6~F@$HJMo#~s5ha8O@ggfQsu+c#lF@Q~5vI3=ok5&L8nb@{s6%q}Naeblvt zokm3lL;!+o3EPEDJH;Oa`{E$rzz&35!cwW9mJ&%N^d-uKx{7JCGQFqSF#zm?mJreU zmoT6OTV92DQ^2Jr7T6F?FY+F=U(|~D1`d4xU@e-X-C$%Gg;Zzo6sPI+V*@v({<@?E zyKfsZ@9jhTueNQU7I4;4)vUfnXV;HU#QOCRc4(Pb=>)&;G&9~m2A+`~Dr{T*yOS`O zBX48dx@~tf!0~&JMQM?0h!~COHhHng!?}b!OTnNB#uP!Lf+uX99dL zGc`rwJ<;&>ztvw7D^`8yl1maJmm8I*P1-Bg#EH#`h(_S)Yp4%+v_kBtestmwub>lW zp=Zpd3d}|XVv^%wT%c$Zg=0jC9 zYWF-C0Xk?2p1X`sid?k}5(WymW;og~R^rp-|C6Cn5J}p_`xxHtwxN<>CsR#5LqzIe&XN36H`e zx1x{hKdHxYnNTgi(2$3&nt*7;PQxI2zb5--Vp9F)`MblzBTpcB+`&grWS4?WBZ1L9376E$K8;Ke+hv?O6R1250~W`QH`Ev_|}r|iGjIC@f{v$ z=--#6JUr0Uzb{Mq@VF+spdm-0M{@&=0pEVl_ePzKa4#!}xuYJ&O*8!Gzvt!Td-33S zmzT@N)yKus>xMg!5OZ_)jpbHn#@tKc?wSyD_f0?Eofu!vc#r?w_iBN87d5{$mP;5u zk5o)#?Vk@G+B_twX)HHr%aGJ&bjOKaZp)A~+=XzrdB{ZE!HdJCaf+9VELZ{A1tTJ| z8aI)dD-Rwj-7+K_zRe%wChY~|rsGAriCl6!9*U^&jr>S=GTnWEIopagC_`iyVLUKH z-p#wH2cs;ZdYG+s1-El77n{T5U_4@-Lp1%EcTwst3Uz7Anr$dh*0Tq3V#PbSE5%)% z_D>|ig@?C{T7@aUh**(NFfWRnJPHR}^lU(|pP~68bZ%c{njL?*F)_UvxB%gC{@s&0 z`$ug`9?xwsX69Wq_e;uoNaVLnIxvOK#G-NZ&$zNRu@G}w>Tr$tW+GEdhnHK?0B1{9 zJMNa^Zte8X@okQi8*#g08TllC>&0OkJ27q-4Qko?3pqM5p@qY;j~t^hwBgA6Ckv)K z!d>K$nIo_YsYEm^yF^EF7pux0tMsbWx6Zq$6=4!c_EVV`VQ87{NoT4gR2M~_d>+MR zC!uVF{ZFTbR-nD^cVJe~wqSdB@VtFH^dnP7!&D-Dbu2P1zX{uw=tva+*+T&Qa2tTO zIN(bH_5g^MtpS;D-22TFv9i%|B&=-nHf?GdjiDR~(bPW|D_)W9&p>sy_G04yIR48m zFbFnBe?RL~zxayl_!>HL0^1%}-#Qg<@MFSe zVb6Rm^eYNmc;kn45niy`M7u+honyz1&zvxk=8;FL$m;97Tox!16b2pbXGPj0xpZzM zca}l%cW3sCA1yud>n``QAd73fTq6j-I*=FC3SvJR=rov!;a3%Uxn>Z8%yP{r9dn_tuE@(R1T}yfK~11lpk`1Ds1>vo)CSrKY6nF?ouF<(*R12yDEd(`y8bM8~4>76-#w@#JGBA=3Duv>LP? zv<kzjVv=Bsm*@?7e+|%ozG=|zh^s;C-uI-3B8ts$} z%EJ8~G{we zUbsi$YC#!u5H1On|267^G`AvL2$YWdMuZEIKipni>4Y*1uq;p}#l>|e{Ay9Aa-^4v z`~#F0?n9taz?`P#yfc5tq2Yf0hVEEsS>m#6N4fj@DKLPCnb%TbY4)n9&dLhUP z@`7?erJ!3u4}u;Ctp{xfeFoYG>H(ebQvzoJSwRy)`JhTr9q1lV6KFMPEod|7OVGbS z9O_TMvv3^^a)B~IIiP$H{bu1hA9Nq+anK7O`n`+mC!kJpcPDToKxcu*fK*TxXgVka zS`1nSdKUB=s14Ks`W2M?O9Gb;8V&M-@<64axuAuh2SKYq>p?p}2SC4qjz#;YQ@`LR z8`mkg`am~<8bFVNUIuLf?Eum5U$}OI2K}bH|I=6heflbhlUi!RHmm-$gX41NR8PdK zmbvC;UAU+E$I^i_I+X3NM2`dQgBAH^VYgK*ovHpASJe2c=3Ggqrc9_EOMC+C@{qss zGXESMfO~v-u-XrRqZbHcu`lt50Tu^wYDu1ca8D+kbrYO(74{dhmuItsMLxYml=Nhr za)fsb#|2qN5d(rLuJV=_xnS*URj1ydWy=a&M_CO8-+qS z#_LC<9h% zbJ&qO(fhoh8319+QEj|T&f1UeOG0y)gX*7MR$PTW@4{ancZbM;A!0z72t1 z5v3%6UQt0y3FxL&#zWNwIvQ*hIYRI|XlZo2Z_$nHX!GUaVZ+Ce)Vr*})?4K$F9Z zn;I^kRyiBV(0vh3vxtTvUshwEUKQ@J-p?zq&h>{GMQNi!=%?*aUO*N^#$(VIST+{OAW+g~)x zKOS8~$8qFFH-muV0Tq>(-PDgKHLku-R%cMS`{U1OZ~b53PS$04>{%;IJ-etntWWCE z8Ys_1?6=P;3J2nOJhQBNCiQr32**-UUjMq;@iit>$ zjXPs#^yM^N8Xl$#uzP1L9kq}XuDZN*l71)_musS^@U(F_-GIr&cr^QPR4*RNc_khE zQyIn(sGQ+9WV?y6L!P1`pqSW*H++fJxQgmoB~@WlSDAYwutU6r^azs2zK1gXpf_^- zfBajFm5&6}pVn%KGT_bu)zY;tfh)WNHY~1nwUFd8@) zqAM?GN;VYp|J`2-`k6YNPv%GSGOzMpK9kSlv-uo8k1yma_&WZ5{zHBj{~gZ>iGoGQ z5Jn5UAPTae3SJ>o$P$W$8-yz1CgBd@Zs9)RFT$h3Q^E_vT496mmatv;MEFwJCwwpb zDh#q7YaL-d-Fmk5LaWv4vW~M}YMpAm##(H>!TO-}5$ogDXRR-YTg6>sk9dlGv|X`} zvro2PXTQ(hWPiv0q5Tv4A$yYJ499s6$&uq|ay;%>?RdrUn`4CZ2Ps3^A$3TvPw+ zilY2k`AGS+=aZ2pTJ+i=kpt^A6O4q z4_QyQS!_<*MB5bGRW`q^%Jz!wW1G+Zo&9&a>bTKyuOs4cOBK=`(uH!pyj=d1^8x3J z&JUgK&Suvd*IL(WuC1=!D8bjRy{=ze2VLhVQK&le|%*NWBRLh&EsxsG{`b<$Az8o5%QB`=m&$}gb3202e~p6wj% z^f-ggWzNT(AEUe{yV6~5*AmwTmra?i%u`-ecdK8jzpCk4jy7E@(f*|U8Krtj>(Y*O z|G_=o9dK8=!|t2hx49R%?{PokUV+j*<9@;2>VC`pqx+zHh^O2W_B44`d)hpocn(pS zz3e}C41W@T2LA{CV*XOTfG^`K`6c{){0sbMemlRPw+n7zyx<4NJ!5^-dXD2q=Tzld zrC6P*(&N|&l9?gAFLVgc*xt77wG9@pKuwQxoa`9o5FLtRiQ^H+XO6EOKRZsA&XO*a z1ZgVT{{-bh<#pv7jzQq$KB7mUv|Id-t2zY{gL}K z_c!i;xqm|ahk8!%oZ>mlbDn36$Ki2%CVHlLuJl~*DfLu(W_fP)-08W;^Pp#i=Q+TliLfE8oWNJjSyZV>w5dE))s@Atclab;3fSL1+}3 zgjGVb&?2-7TZJ}Zr_e4$gifJb;H*j36lTwboe| zS{tm5)+XyJYqNE|wavQIy2sjX?XX5LayqSD)^6)iTbfO_d2N}tEL*lM$ChWCZp*h7 z+QPP_wq>>^+e+Ii+iF|0ZH=wPw%*oe>$G*-dTgASC?<)?Vv3k5rimG1mY5^viPOb= zu~77h0kK>RiFIO=xJq0tHj8V-7ID4UDsF;oX%{(rl0Dg;Vo$ZF+0*S7`zU*cUA9lR z7utRHfW6#~_xS9!_PO>tdxO2%-eO;GZ?$i-Z?$i;x7l~tciJP6K`D+@N17wuVF6cV zI7T~oN2bH)D0hS$VMncFuA|N|-?7lK*s;v9-m%HC)v?Xd=Gfub>Dc3FcXT+q9H~;e zWRXTeYK@k7Nt9$sm9nLBDJ<1WbEP_IzO+zUEHy|=rIpeqX`9pr>9$kaBeg@uMWh2# zkCZNtk~8GdGB1m=EUU6t&Vl%vPG^_1 z+u7sfT#2qESF$U`HOiIg%68?r@?6th`L05j&lPZ$yXLx1~Ql9Xg6MM+iClyt?S$jWr3Q1K}NrCbRqVWn1?tJEn=l{LzGrB&IaY*n@? zZORU1r?N-sR8rJ5HC?r+qtpy_G-R}>%4(JxP(x~1tySl$br`h^)x~Oqx=MXX{kytN z-KBn^_CP+3(lWHs8n20(j4|xhGPPw|Q=A0drtQ@BXx$jciS8tKvOC3{>P~Z~yDgAh zT!_OviX7Jj9$aVJYI_IL{af4jwnMf=@kDTrXukp)>L2zG?E4|_FLkV!T3w$(mY1m& z>WylRI!C=lyf4M_o@%5e}-IHu0EzdsXn95(dx8u*q^}F>2H!;$1mdV<^Rkt z=bz+H5HyU$e2hgOM&o1FFKs{D2HEemudrX{_`CG6^o4YlJk}{IyVSR|1oxHh``xE| ze4gc=W|9vL9BeSmmXX>w{0yN|cv^T)cu{yoSSP$LY!tQ#Zwv1U9|#`{yM@n%uY_-f zHtRlXmMv(TXL|@^>1FN$Cr*Y=@RK$aOzy?KIu_u ztK^k8%D+25b$z2;qFx96^ssum=FzUu9@HMzp48sc2D#sGcen-5rJk!i`H*bydiHsG zsEkeQKbHm>zk+{-|A7CN_Xtb87{UZBi_I&$I_SN<`q5Xfhk8tEV z3LW*17ciP4j#H&SN=4Fa=>h2pX`ghwtjL??q0aN1it}1$rSl%=OW@XBu93?5icP6d zZddMBt_Q!gK%(zfZ-?g0cmKuRv+Ot9Z?`YB-(&x){W1Hq_O*~JTkY@LKec}e-syt9Fw`;JG0|~_Bi~W% zsBzrkxXbaOBTGA?O0poO&bCK&e*EFS4c?{OUkDAr3x+l5|p=Imc4ekfr zkGh|BuW@g6?{a_c&VW`a^UU_#?^)()@oa+z+3TSvw##7e4dGAY&*sNLUxdJQ_wi5g zFY#|dFB~VF4tpURJ#njWkMJNk=S67K&xBQw-QPi47uW)}lSPkMCf+ZK_9>{--R)>_G&=t3IN#Z#u2);tP3l&R$2N6`x>MbwwyPa#L_MH(s$FU~ zMkuExYDrqMmZGI1V`dY1yzd@?dG?YlWIm3qTKtw6IpI&BZ91uPxLTYYo~` ztr26JY$LLa$S&HdZPRvOe79>I+5zb5Zmmb7QBGr=MtFvMv|Dt`Zm&Djo$bzn{?2#% zV7r81yUcahxfi+@yO+8f-A(S5?$z#QcZ++ydlTBX&Ar3D$KCFZxDSAby4{>7(Ua^+ z@uYduJ)=As9^NB*RFBt_<;ezbP4^UHbe4NUo?6dbPrc_M&!ez=T0L)hc6dI6UjJSn z6Kx!qKZxUoLaU$7kAnTI zQ-rgG^DxT46@C`Zv0iJPX?@80p7nFBF5@(%G0@t`;!qv{{v zynXiX?Z4V5q2KZyGaMC;D#tCb2p2l;cl;Ta(vyzo9BUk}JKk`-1zy|@?X}Q_c;r(RV=W^wv44t~6Mo z7U-S~*Ju~-5?!)Ob$OwQvJ72R?wapf2pzN@T4$?ko2$*W1KMYgtKHQB4P;R=l+g;W zh|oQ%;#D%0Ea;#4%3`GfdZ$rYrZg!ll~u}W=$;64PM6ZH^eCK~s3xh&Y6|pDwwk9- zSM$|E)dyKp&a_X1+6<}Em(RP@)P8t5AN<;zTS*gbGPtvg@u#VWGTd3<$UMfAg^Vl9 z!IupN7q&7!+{QR@CwMRwoM&OYH=1#u4E`(f1Yt=&;MwBg+V%O%V15LD0p>3S;HU-Q zq96D{!fC=-;d0@6p$0Rz3t-1x4g2jj>pj-TtZS@qTR*|L=WM6i&a=5}lOXpN+a9*P zV7ow+#EIf{VvFMg=NHa8X!>tmgOt;io1nelRyvf?>LlpBzo^fviO{>1+TGec+I`Rp ze}U!vsP?$_l=iIlg7&huR(nm`pl#OP(%ywN{gL*G_8CTLlAG(~@GPCd zbsm2qKZdvR4&KGPA-N_(b4=l<@>lZL@YnOjd@1ijiPu{{w5HfDvK85GvfXRj2CeB5 zuY!br5)%4(@g?z9@$Z=Rydl0Rz9YUbeu%l|r{Wjl*WzCBpW=7okK!-l@8WR#`S#wn znODk`vS6X*NO{t9DPJlCmj|E)L(F2!b_SHYl)ovjDCen~nxhs&!u_Zos|`p0tJ;;? zwc2RR1s=vMU_E;4L-$LV?|e%-1}h(381E;cN5-N)Gx^zUj6VbmU^V|Tzn*`W-@|uc zgm>{he4>ynqzdW6D9pb_$mg3e-(Dg-Bs>YroNV$ASmg&`mv_N3?}2TeY89<2Z1PN4 z<=L>y^I)0hTf^3+)@88BSHdP=4Xb>OwS`&cov_7w(9emsBwMmA#g+=YJOeg)%p&(e z@|W8}wmMkl@iuv@Z4>OGov_P$TjlAZMdV?ZPw!=whs9dVJ6H9w%D0JaVnj^pW0jA# z^RTaEyK48^vtgNs4ZD0kwCG}3=S%G?p?kGs(_opCRo;k|gO!d|SUYHjY-@pq-rA3i9&sFSbiz{acJw$nDN#y-yi1W%rL=x5 zcP}L0mEeb2ka~-y$E0Sd6&8EEz1}HxN!_s8IXO{Il9S~WNWC;UUAFXN#b?Rca*mt_ zYd&8tlznnQE|)`c7`FY~IP1PieqMe_-U^$()3E3{XQDI7ne0q)raIG{=}wDtlrsZ! zco}wmq0{FKILjej!_HdgTxXqgzH^~-F|7Ti%-(Nyu7|wc>D+^Peg~}m1O3?hsjjmj zZKp>q{g5l{s)fB@=W2kh-(pz$F`1j9e60@Bj?rpiMc?m!%>9&mKG}UKcovPzMbK(B z{9XL(e6jGVu*mwU^%%_ScyYFPtN4JJV80gnsS^G5IokgMX`=M1G*YgTZMkIOjd>J5CM^;)qQ(q=v82>03>VYwc( zesC(7(Vdb3az5z1h9?bq< z#Qc99Rsc3aiofl7&+`E+)ZL!XJzqhF?DzcJ^MmJS&u_;1Ndgy!JQ>Un<5RIp;uDH& zOCSS3vVCJafceS^;yI#C42yHbdhtc^b#XHrb%QV)J_YmOi|tNW+rQa|IZkk#<~YYO z24iNb;~Lnal~^_Ti{oz?G0!_*b8N(1_Cw4BzQySH#W7Sm4rAg>tfX9wIqX=Bgj`5R zzf=Xge7>|udJq=CD(M+%t@JwPvF}TtLHl<~KT3n-VHg9a$>+&`#Qas0FU6W&zFdS= zsA_Qe0{K4qA*@9`iS@g6;PQ9mPvp-rd;Ly6C=UjQpN!S1^PQs8>73}i4E%ka^9HO` z&2`?6cD*07*T^-vC%VpZoddhU?i%O11T)vGU8Sy> z;Nn|ccf0-st6{n8S=Wo0vA*Hj?)n%O!(P`&@~-lM(yn~1e6RehB&x@#r>JLOzIu`BQa!L8u28R6OJFn9 zsCTG$sY@{%d|Z7RJo|U7Grb4P_zU%4>JPAohiD_TQ(*;PpgA-}%hD!m*JuT>cyH8h z)#ky@eE>T230SzVLUX-JM^pZ0H9wh8VN+$X`RJ=bk@OR#7sVP<$Otl0{-4!78S zFI$IecE9A_;NAiYb{AHo_QQJp-F>WQIP8Z%U@gi9t962BD&}iG%pPW8R@uYm%@G|DETZMP9n*2Gm+;_r3%n?(pCu1%7eCRo+b)xk$=(p>zk{q~SZrh)* z?zG(YtnEcxDv0EGu-8K!Qd@K?py6g(f3QI62tg+u=zYBWo&-Tad zPupL!Lx2?G-5Ip!xtPtC$#+4@e=2_|U*xnpZ-c~m8Y?n?hi&{GY~wGS-#CAOeLTc< zEY`8pT^G2`6lU-9?1z3%_(KX9854P|FuD`gRzUmg|memRBrRr6%h|APU^=3%mCF*_Z-_(_`{9aZ!V&3;5)=$61Z0{HKpn4qU zcxP&7YZt>N9IH*lD*JTJuic={hE==>7UIKLmw5(u;p?!7--k8$l@`%{)PB{5VO8cd z_gPqD<=vWlocnTE#YI?Yt#*@kx!e7adzt%5Nd0wKU4F;C9dq9f_jg!j9qdW+oa{N> zbG~P^$BEhSWu6?*bsjE+_s`JO4OrjkZ-s9UW<`mP;~gU)2hVj}=n$|1vf8oTah6mf zHA&Aw6TFA@xQO&m>3hszZooR*kMghbA*?;5I8T9G8soG(CtwX?238@S!|K^PPABBc z$7t~($}x~7Cn_f^rzvMDe^9n7zbUeM3D$)k!Fo`u`muVBwnSSF+xT_u7tQ8Yu%cXy z8b0Jc1(y93&m*4iNY~UQa7%G1#hm?Ztcd@{TZIx~sqn1evfhX_*MD1Gu+d)y$EJ#7 zz^U1=!L9?J2EnO!!WO$Dh6=t!F#pVFd4it#ttFssqhwW9zGR zYSs2b4egePb=mxWR%Yib z3;UTVH)F=v($9)*J7$3q5P=+u5za#hs}dnyY$GN+#zc5Scq-KBU2woGk;j9I0w z#@u@iG-%)1_ntnhOyG+D{EpB9T@{y#y4MgqjmNlwgc*u!4zBbbKqIav;M#&~3a)Lq z;=;w^(Tn};*;^lc829UNc;JpS9^_6t0-kXMTs{Jxbp(9+ z5%9nf@Y*Bb3y**|_JdP>R~-RwA>1~Iix~dY1`#{n`Jje1ezFArIJd<)h}&j*;(7pX z^k4MnQwDKMiJ6RFw|fwmALq^+hYpL&Z%5{!Ub~4q;67kR#t`kqB5fu9!-90$BB@_#b znO)RP@6N=#Z{|5}HuKjb40{pNz=;Syi%qvV4gp>+C3mSFb=ZqT*WJn7g?fyeXRT{t zZX>|#b?esY?n0K=u&BF~xrfeNSFii)?$S~ty;7DysI+vZo?mGxB>;CRbI-h!xravG zFZXiaJhP=&_?y?QyE8sM+%4qhjQF+dTGp`|!JUBe%&vdA9%qPh!-kd?CY)q@<;1i* zOJAh$$PhraF!ats1&zfDRG4rgV6OTVJpw{dC~lZSO~OiyRB=0)1z=gS!U4i>7&j5V zEOVnx0nTP#hy6L!I_yxCI!7Kl1oD8+;)Wf%hf6rL8En$dakq71o18%-;U*g1dITar zlMrVZXmB@nLG@rKz(Fpd=TP0?gNNGj#c%x1#Hc9as<|+@y@U&LHC!dTr#r%eTq*t* z8$LdSv|wzUi)Wt~aPe`=5YNZ?@lF`U8945VTrSeDLX0A=0&(;^AMX6PuR%<|V= z!w{zirK&c3kHPLcs!wGcmSm)hliH(c=sDR}4^Kf}MnxJwbI616TuK69W!CL-Np+?&V{^fCFBfFFiHyHI(k#)BC?hf72X z#1VeuuAK43SYR_iG$M~dU*HsT)?O7zn>c$Ic)SEi&~PU~R|Qcs8VP!cBxpQ8!o(2b zLCT48CaxzQrB)bh@Yx9{T`|j%Mh>NJfo?QMp$EPtEIr~MYDF4Z

!YV{}hE<-bVNUAs*3t{Cw8q=SO?olr#OMkdD&NVWp!Q#g~lu#R6WTl>M9w_av9b zaL3~gq)Plm?Lsv+r9~-1>wM`$`{;d4W10F^@3|^m_1-jl zlEUfjOIPY)y%(w7ss9EWeKy$WtHDMOjf7=F98!kArqr!MsjA^FMNDc@>IIS*)Q;5p zB*97`3rRkVJdEdw!{gHrK}BSBm8WP zOj8E+&efED|7Y?}>8GE2mnG$}R;7LaI(U3!u*r z9~0D86iP24NvgiBd${f?LCU(mC8?v2K`IkTbsjD9zb{Wo<`KUiO=41;A3cW?Aeq9f zt;wp=^#`@SZXX@b#wFF5`nw$G;*Lis8Y^M$6wIJV!jKjqSv~_q+(IoxwIlr(lcyQ| z_LW|Ky~ld%1>Hy2CZs)LvYdQKuAhjy5&u%p>6V7cZ4;2U&YuG0HSu=^YDf~q)HZr4 zY227L0)^618vkTd>XNRQ)r}+s)j5DLeaGV&OqL&xlTOi7)vtZaaQ0!cAf7{G+KPJk z$YUUpn~HWPZ8-!woce>fb5xwxrj$%;i&~m&xxNxZFQ++X;VLAIk|6~yhJU<$t&hqR(3_@|Hd}<+mNYJn=}EZ8_o-Nz9scmA|9bo#PfZ}yydVm>C!+S4?6$EBq7D`D+NcQ{YZWsDTWVqI9feU z9Uy++5~mFiUgr;8tLSp=JneFM!yQt~52MBnKJ{VOyaXu*P$nvCD`{xdL0s zXd@k$@>guP93R97pg8V!+_G(B+!lQgCYN&d)Vyrwi;b9r08R^+l~;2qYbI3`&G2WH zhq&a+^ex5!r_uH_T*n(b&~Q5nw|W%r2_x@mv@eZYOW(D@=TR`rzh=UeOg$!d7Qzsi z{v;C3#fD*yn}^*_hVS*`@g=2d%AtBJKCd;)Kb=dr8M_48K2d$m(_%?vt68+7mw5fMu0h*D2xC-!$--?pUSE0eBH+BU4rvi{@F-t21-`W zN*h8ssRT1H2GNh~rUHh+59%Z)Us)hK1N+~kV2fZj%=i}iUG z>D=BW#F@OT-o3;0t$p9RpU&zQq$ RqMnxc6$SXu@4rC{{0|4tFYW*U diff --git a/Source/php4Applications/PHP512/php4App.dll b/Source/php4Applications/PHP512/php4App.dll deleted file mode 100644 index aa4ea5bfda664db36971774a6dcc4577f38adb09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37888 zcmeFYXH=8j(=VJ(8YJ`G6`g`lN=}SS4vELdQ&PzI zW8wH@N&=pe5Eh<{_li!?)8$7h8vXCg{-0bUSpxt^fM9@RpoQB1yYDohq#OkVNdiju zB-p)<2LcAG_ng()>#V)L7oGpe_X78q``aM@H2?sEdy>C8dkyqISO0Q*!v9D9cL;t1 z1Ssx7b$WsSG5go94&pEFe{K1FKmhuG75#t0d62wy{$mLL-_QHsPW;yvQ~+Rl4|m`{ zTwo^<_&=Tf&&uCuOlu{lB!~WG|2ntl%YPoa@UP&%8*y*tzq$WA`~Nut2efqc z0ej~shem+lkI(&sL7rYow>=L8bmZ>sYzhSIhXL-|Y4I)tAV`=SIXOBZ65tKEPw2fQ z3z4z|yE~;s|KsgXl9bROhxDcL_}rb3#e|2FRl@kt!Bad19?b1T3OPJJ9|O1dNQg~H zOiK^|62`_tf>|&db)FIqPb#2k+s~ zx)LJTzZf(e0+0+VRmSgd*GrY1Vasy<_yuQ}WZ2y7v>f@wo?cQM{!R^IV8&--MKr$3l=dY;WA#G)PLYM8=5jufCFn2<+V3!m0*ryBi>a5=0esurn{*&wz9xjX( zx=4n&m=q>Apc$eVt%>4oRMKr31cs&aAlMB}5To!qCK3m-;@5>PLeM}P2uE3rr#)5& z-cM+!@Z-c8Qv?pBoiVcMd1;FA`c`K?MBg_cs8C$0AdN``qy$PdZZj4a3z~GD3CqbJ z-+~>C=fJVCwGE4l18ISR6lq2iFdM4s-pXIQOv^wYwhH51LNbye;DGJLjkgRgSe)?g zk7^2lwrP`L$DGM>%LT$4#2BO)22_`P2UM?b*^Z zjB&;OheuXm z4At9`LWLEn7*5xruMDt|)h0O9gORwfd1|a?uG8>PIg1BH3l(Lx!d0HiwWD5 z2Mlcp1xw2`YL$E%%iIuPQh-bmtq`b4C@ZerJ_bUmN(BljC%xdDuhTQbPZ zZRcTRzX)`hSfy44^o>}mzqV!=ylq{Hmvar2$wq^>&!mDFlY|avU3><-fdS>E?(;f* z<7XdMecQ{8WqOZuV=*NTVJOhhd=~v~@c6+L^_Oeqxu@`TXTR&;;DDV4IED^A8|pCg zeB*?SZF`(z3YY;Q{7fnSlc%S6q!vddnuDZO=c}kJBP*^yZKeV$wV6&-CjF8n?nZKsZK_SNlNddZY>B_j?tgo7hl={ z)-+YThYk5K&q2ZD7P<{F6))xw_@yv@A37(EYDR!U+z9TJh`FU#zaU<>F(sF#m}3vW zrsxl;-@fJ%K*n{To9;pMq|kexI&bVNSzSuCC}WAypMW_P_hcRg4|T$n0%LF4=wk{T zaUmrUyAB-xSmbGtwDhk>cDOh~2WNED)DBNGc2iMohGS%jN8v6V@YEhGpM6)pjP%hQ zdB#>J^NRG;h)vj618~xJBw?T=fcrVckMS-=eaH%C+!r=gVm1|A&+x|-Ops+?4mI2# z>!>lNv-q&A-p@YpUm`06D(7Xq+2#p8W-)c)n#V-Y=G1Y-^Dv%n7+pR}S*QL8)eMQf zR?%B)eh4Y#9^8yT@4Gr1TpY#4^rdIyl-d{4%%JAl^e!bq-ymg`(aD^Y2 z$=_+3)Y3lj*)T^ZvkR&MyyffT!@ypG@jqK=IOX3lB@HV!Kjog^PBCvGqTVP;5KZ+?<3y& zezJTQAqg%+IvFVd%RpWSe|FD^&Q%PZ(YpnH1c>-j`+5_lk@ z`&6=kcH!_i4n}asJNN1660-u!(D*ne{rcEq{n?M|BR+{eH$LgOZyH~1PeC$|)NpG> z0tO}Xmp1tlL7Lz1UDj@SVofi!HwJgn=IWVoar#M4yGGdsAHI%+%{#XLK2o~gl>Rlj z0*j{m)BR3Ka}G|-MRC4Z!iCTJKF~NcL2J8bn#pgBcF)%phk-K=XVPV$noR>*uaWyA zvx)GXiR)E6=sZ4-I)O^-0qGZ4hhEL6Gx8-0B(L9inh&F<#jt~EsEB3e&3iX?PG8rT z*5@a~i{ZOlwkii*8GHnG3bI0#4`>@z9V=q83Rwfck79dyALm-BFXo6TK620dK!KN>jm8H2co@3edZhT*zTB1v zFmfvH(F3L9`O31f*%=moUg^jY@f@bOCb|n%CoD^@l;wnq^4~Cc5gH*-@ql;~eWcFu z>4&R)4|oKM!d=xe1F-}MEz2m229M5HSU6@4cn&mB9%0|Q7s-#HE$tX^jyO~vKe=w! z^sI|NEfGDAtW#uwZp6*vWBI&(zAk& z47I5AxKp`m0S`{Q^vGSeF38j2@x$T=Hc5n2@bQ3L% zv4D(cR3Qj0JpP{gJK|A6ZZA~#;Z>Kc8NX;sfpaGC2>9kHbZXgD-yvl1n{n8wc7nV( zxC4DmA9c@j20N3OOC-F@r)VU>A`Gs06b&J-VHHNQq4|k-CxV4qS+I?E5E%!YK79Jy zXXX9DOtf9T-;2+Oj4 z>-q#*+dhMb-Sf0aO(VifX#zIWtt}Fvk!n|Sl3zkuxUhw~4mOZ*7W2)CdnsC{B#m08 zcX8x1q2zd0?}e$VjPQpuPHFAgUqK95TnyoAmOx&zlgdos)N#}eFWthr7Or zKO27b;UIW^Mn&dq$1#qUhny!n;9xKC*@<)oGD2jeZ7DThxC$b9pJLaRSC_KdbN*!M zwkTCjG%GQCziU^X5En`h*tyzh+{H1B#q=9>cr~?^N)bZLvOv;Hpg8kQLCLN-Fh2H@bu%PL z^q!G(izRrxkBKB*AxFZ|XaQxyaXEk;o{r+4&S&%oOW_M4K)b>7(cr^(M#(=%TIv){Z(t}dFi`ty_R zG|ijd)dyH?MlmInXiyvG#=iK6WlJ^KsC%OcEufzU5DA)`5xEegL{?pAB^zPv*V^z%__L69~iqtIf7s-4l$~Jh!LY3WK z%BrvGU?J%1rgt_&Hc4-yL7YqFqu^qInip=rM&T&t{04_CDj`PE6i^NDQyW=fe`FD+ zj`7ITZ=&9s%WNg-TSS%o^P_A{qCe_zm621h&!LN;Sc!W&_)Cka?78(%+Uq1eEL#dz4`NUPO&^IXa zN8%&bHSXTYmxPzT-X2{Pl%k?AaCX=kXxiO>S2fK#B&M^WgA-|IvZMLBp96U=J2hdW zPZ-DIcDfwd=`L;aAp46x7np|emn-OBMC&gDU7k)o{uq@FE2J-)43n9ueqUt#7&;yN zDcHh=Vs^_PMurGo-x!0lr{E}GuT{SE3kb#5nG9ZK6L2efe(<#?Ugyti2h5G@4R-Q> zz_^%!B36x3t1F+y`Gg+o@P4e?6ZPPO=V4pdiHyl1qg^%09iLAi-dCStws?Kj=40X= zh8vhd&X{q#FBO4!ARb}HTI5I9-XI)(UQcdQ`Xb6WAmbUJPdBrj}=d3`1 zZILG1kXk*QhP1nj&rHTub$-6b%7U)4RU-l>Uwpd{%3LX3Sin5~isS2ct-n^VNrYhk z72*UQL#5>!f0jEg(I!Gpm?l0teN`e^Iu1IwB!J0ZR^|mFzE9=T1OLTN<(jJg-W~OPOFT^4W^Bf1aUR4YSUFJ%&AQYU0xL+t_;dZ zWHS@*YzINQZ6V52JJ6@ZTM`7Cw@G8+enHx;5`!Q%4=TPB-!Dlavk12YIDm zizXd}cP-GgV91~I83ORRDC_yJXWuOUzMaw+=nKH+3(*A=-0aGBd_X3?j4(xwf4Fra zhaUtyzRvs7;dx}zP&}92DhX<7M_25hnX79@K7meGvYZt_X6MKeyG?C58eL{3a8a_C zCKU7hHE%}qw2+w{`6wqCdi?j{iM1&nDA|y#!*Mmcq$)@@(>$*wFZ}rxDjuZxP4ka{ zwz3&{e;SX+6t3#ws8#iH_E!yX?=OC-b)~nv! z%9g(H<05a^75#2K;M9s(S39J8)#7t+(!Eg0!{j8DQe_#vj|T94^SQEjLjC&)JU0=B zrG!DQtG~_Gw*2eg25C0iKT&d-()C%oR|F9NLsb2k1k#dw)kVZKE=WZ}3^(uy>6^-Z zIBdJH?=C$`_CZ;DK!0##4pQEvhZ4qxe*Oed5kt_n65u94$}g5+e&uN(Et2`vvEhlS zE&P+++bgDb9CMN&6|!$9K23_3W(zseC9FO}6fO-4T20Fx&sj3yh~UYYXZg{x`H%{; zfG19tl=m`J*5-X?-bjW+m!_dga42CHH zO}x#|vh%6a*&o>QzVkd!Bv&!3R#2@TDqAy)JIMb&tC=>6RRoSn1ElPL#)oRu`|M|} zrY%HE6eO6gTMV(QT$}D9V}C8UBV|d>FQg-1`sf2-&qEpXl97ex!UQ8wr^$aMNT*G| zL5jV(LT%S66n5-pGYy zuJAd;zNF$;RuDx|pu~QnaMGxKEQo?^fG$a$Q9E**PXw3>4M-UdbGCdPBxW@6MY?_g z6@ev?AZJ`HQ^arn)Y0&#w7IFkFB^zbBcbG1Vz4UnI{3UE*i(C3+hdLf4&)S*dZQB) zQigLL@$i<3Nhgw{Bcq&DLRIkxOpNsegRzZvCipo3uiYjgpRPUcp?juu;{8X}d-hmO zT(_HfY|d#32d;f4c9{ozBPTA{NVVYB3QwH1U)ndq5LT7y1`8}r4pzZc!jDqMW0g~1 zFq#zQ%yXo?Eq2rt?n;?XN1*I>pnX+|vG;xv3{Pi>IJ#^U^IIabRqxbssp8pcG#28# zY}_9)KDaNPw3EOU>l%0rsD#`Jtg)?p`?-_;j?O)^H7oe*LA4*^GJW|1y-9wWPDm3q z_IZ}uNmw3Z{2*tLMj2d31WTS1S!lng`@BC(<8Hd2{@|@x^t1=&@|;<_8@1@0ziNN=KZ|ZXzdvp1#L~&2!akCqOr{}^cRQb3P53c zaLz1b^(8wF1Tr~D;JRww%ql`!*q3?@=6;?VDIl#rJ+t}#Pn&lTsFpJz5kzs=F=}*W z9$W!4>m(0bG~^-}#4ms7>g%2u#)%#E9pG<^qNs^vOMc~k`cWZa!2+8F>ymY`jmJXQ ze#XAD3^6YwU{iz4EEWmyCO-vz-+U$7%7<1fuOa$dQs55QhTOeTd=LFu#4(lr`&h3# zfdFdduHqQ99Z(cdHtjz4vCCAltqzJQgAZ9%Mp&37E$`jC>^U`-sW z>kF$Hqhf`NqrkUrg7eJB!$C(4Jsf7lnjCe9aaw zfAd?CS2s2nH~vF82>S`sr(z9m=FUK4Unh`_mF+kR!M!m{KO1krM16Izn&`H9Y#Rs5 zA1DR7079jaxE7AMGO|U^c>w$EP+h&FGNOY~pmEzxRO*s@$M_v#NPFo&de`+~-}|Nm zDp-D$O)E`?_s&ZcPyEt;hfHac@hn-@AyTH~4ModAM`6ogs z*6+q4V(VAh;E4l=8O}Ri2OZL-i(odBGD=bpFBfC!eYp4WX_ez^_g}l2FZdq#1xJ`q z=yFlq72ze{O@$K&ct`ANJQZl^?FANf`zbO-zU_#i_Das^w0X0)1^s=}PPiD#W?Kiq zQR#3z5Ct6hF!_7RWF=E+#i$q2UufYaurN@|rV*-0WJaowsWBrA2!4f;~ zV|DSa2F^h59OPy#Mdg}~>V5gtbjgkCTfx7LIWb}?Bux*LdwUDA0NLELsZ+cQJNo%6JG+Cf#VO~iLb6E zJ)zA~w*Q5%*a$clqp_SKqJ3`wZg%ljJlTkjh= zDkv+Y+ZkH^)bsLwr)iP>6`FvjKJ%;KA9II8?adi5Mx3IE={vo#BFu)RYe-hG-09-8 z*FW`OW4*6;p3jA#+Z?d;VIWa#t9Ojd-zaNdDq{1p~sJhd0-q(VT|- z0n37o@IN@#;zov@$lu&fTc8jhNN;Gw_a_+l?LxR-b6T%)zlg97LKMI9OJJeWqV!!) z@2cqvW1P|z(y3&ryWguPAX)K!Ustc!+|x^)uFQen=L5d>&9KA0;NjcX9*Pyxaf(tj z=rIQS@F1f@4|h$cM!n}5TU^OBz5DInm#kT(dK4_=UNzr0PYLCzBo}tzLK#UM>BZIZ ze-Rey?msfbjii zd7`$Jo%2YR)ttL_0>p9oAUs8I1Wu>hJstC%hoa9NIw%4IbY&+Tq9|*Yco)pQzO3Ub zgRr6lKPZGs|LQpB%0;kLeGh>9agqNVaOIUNF|(Fk8X(a=xZFdNI&7x3xz6<(ts_0l zR~Vv?W|sxA|4e`qB=&~h^(o)V6_aDUlr{f1djiPsChnuYeS?fcAVTk=Um@j08| z2+bM32wo5Q2uE}z@?BJ==CF5tVsB8yGZu3u66G21#aww}dBR*{M?$kw%Om!-gpM`$ zs%X;3GPudDh_QmnbM~1WWlsr`OPiRXn^TME7neoHYX-qDHGArIc4FPngR5fWEtui( zx&aMksT#>!is_yEqXdKoK>?Q++~QxDPdF_sVaCp}rH{RI-9aBP(sAoZ@TW#lDL$ZW zxWp`?x>wtZcU{{meBu2lLB@Hh(T7U4gqZeP zXYBdrK>ZRq({ZcP@$nhc0U+t-N5)Tb-nQk|NrAKYsvd4g^Jgu*8u6U7)IH9>JcBYB zjRI=CK=Dmzk?MtuY}_PmK$tn`#zx&k^(~^Wysq=mFCNdX|iu!m{~?JDjJy7f6FTd8dD|I)Iju4-9*$&|pNt(qcC}k$oGIUryB#^HFA+M%a;M#?QL7bz$oATc9{yH_iaQcMuhvNF}_|Ed82N311KXmrQ3ZG{B;Ia;u$PT67pixP`%_KyrL z_3N~FUTNIgZ9iBG^7;ZEu>jrypBuP&(VO^N7u==)g#Stdv3A#1C1v2owR|dNNcn{)FR=io2ArTxh)djQ38yg6c{C$Rp0X4;j zCnto*>FH{P#l<-;@3ywthI=L^M3O?tQAb1K!_9?ZZAm2$rg!gWehv5)xe~LV)MdQ{ zxEpnT=Sl71M8JgMizp!3Q&aN!KAFL-c=6euWP?r#gGAlaV`Go!ww4k?S^qq1IMV6h zRWGFo%nh6JUY5yh7ov_C^oj24y0nN$bjQX(t=GWolTzF0Bq6&C)D}D-bb=eV`YdaW zi-ay|)U<~`xMg;wnLpUmmkVZdfR1D>Fea-N!>M0JkmD^)$+)L(gfFa{WKfJvx)Q|( z_IxxwYNJF6uP+rQp8N}-kOSBeQ=W1YCZ~lYhmXyOpZa$)G$bxOWmFnu2(|;ud*7n% zn=-=i;R(?o*cWy^)tM{N@@!5-^A6%cp=Q)ih5_up$3--uCcoZG4%qz`Ir%PjGmZg z>?clu8dDHU_XO5!$+CBTsBW@6Xav_#FXl0wgN8$ZtsiIFJ%@%Np))(Hzk6Nz&CGH$ zQh;M>PrA!87?xo0Nj(t~qxGr4EESpRc3tsG6+SP;L0>PUVqE2dt0H`DhW*UiQWEYW z4Dl%l1wO5Uxn%A8iRb?z^zsEkiG&q-s4F(%%7nRkiL7fj&ndF)_g+gA6Dk|D72?Tj z9sGyXT(hN8JlyzyFe($YFOQ2z<*Y+BNo+Hj!T24}n_Wk6kjDNY1U$ZhRw!l9NUA9m_hV?3Eh3BSrYHn3d7no-Zz30T>k zoud$Co}mJZ7=C*qPOeuo7m^}c;GMEjOp;!%^t(G^j!W?hW?ou!#Xr1QaFXqt!7wan z--MPNp*F*CQogby_^}5+KdQIe%OD1Cv?R@`25{tG<1aj)$edV|Wo~e^e%17l3D5Rj zVPX%88){>%ZoC|q0)=cTB;}{pZgxmL6g*uY-RunCFr4SVH^D4CTZ`A%cq=jluY$oj zwFAq&UqM*3#L*}O!SGT%4un_qvGb6A87BU@EKjKrPLw7KA`s$~ZNA+BN^7Bto4k`W zGq52u5r-5g!Jc{9fqA-FA6YAw6sQo^u82QhJ|?@Z`a@EH_8XKY>Bb$WHTq4vDZ)Xf z>ec*~1}S5<%ZDa~GKV>wf0uclhpHT#o|_`U8iWgu^w|hXd0?fd#FE+O&#Mzh>LZLC zRvHsIuNt4jLep4lb&WMu8oB9^7h2hm?r<6DBH(lfby33m95LXn7Qs(2^*5q#*6x<+ z`FOiHo6m5@f!6kBzwBICk$`biA@8^HxC(zea^02Gk)IDoUc-zAY;O9~wurR!)a`6J z+C0&#fv9APccnMFYA$MgRDU>(OF9!gihl6RX!=I0GNnjLy)PRz@py1l?7a!&_eDQk zYR!;Qz;$~!VM6>$9kpY8-#vmIJPQFfjjenoUMR>Tj+lQ?_7!kUt^M*wsJExL0H10z z-<82|sP^-A;hn$_>R<3TiuJuic3hrF1Zr#iru8!xWwmB$SQ4~W)i(d}kG(DUO z!9u9kM6}8CQ0+{+X7w0Pdq5uA=X(oDq!!q zXMYz~d&k>d`#1lr8g(82{iPePuXKt2Ypv$n)kehBgR!X32YIVT zIdgP~LU+-jV->GC>6PZxlj3#zN7>(6cP?9%RwU@ApE_;#!V7s=Eb5WtUXp-UzS#d( zx_#&|BLftzk}IM<)}4b@;c z%6Fzbi1^pS)X_-DK<{erG2$ipTx()x;!Zg6=F24Yhn25yL=!*W=kZdXyjzn^_a)vD zx%OJ@NzG3)^XcMw>R;Vn+s5+`%^!<@&rvTIs}-_{^-wlpZYE7-&r5KeUa}I`%t}!P4`)W`%lXx|L_ujeZ6BN zzM6ZAlGh3g zHMmC({{CdUB{;Z1QQkvCJg-jvg1@53B?*+De{gQEBkG1fD#-ikA7&!o3FPMZB5fQ% zdk2){|CVraYix6ZHns_5c;!9-n6wV^wE5mozyI)lJYb1p($RvQsH-pQ9EpC&iRL6sPqp7e@jncUg3VIBE_iwNP-2HuC9OxT#0j;L!jsG z%Aa3A2=6Qyu>@TCECYbtfJlKqCz7q~XqrF_tr>4@k^%S8ff<|T=x!+VSb$)bR^W(k zX!gH88L_(X9pG6cV34iU#U~;TqDoD__0}7C2}jHVgy#z1eWHGl0Kj#^Mwv4E7aFg- zuN+)m%82q2&@euyfdFP0z5~HkjOXwxZsx(gR?e%jrRH7za(q=4=6jWt5AT+VpL)o+ z-c(P$*(n`FvaIbtj;#OUUzUB#LVh?(I)=!!^5?z^+CWQl&~D{AB$@ovqSNXz(@jTl z>ENwwvA8>~L@|NnD~~2p_mM?Ix*PkPGR0wtuny(RxQ+6o)({O8Ik8VPE~Tiw8Y*0U zi_6U4RS9E=YP3M|Iufcqdm|)$<*^^By;A*xV=2pdus9C)_Z7O-mVi>ousiOQ>$7G3 zb>O$Re8kOoD)QXjJN)&KvSwJF!JAL!a8q!j&_2yZVi1s0>|8?B7`%>hiXNuFO`Vhf z7ycZE{!v)VWnbvz$+6G%pMu@1SHN582}ppGZCpOVZM+A&q8zn71C zr@U9nsx8n%#o6Z0+7^mn!X0KWEyE=5>OuHcR@eR-UH`SQM`4@XtvxFFdwb{a3H;gR z{oQza=F8W=nAvaN=MOo-{`Io==9`y{D}5R){)5A}@KE~a)!S^5j>J1Hl{Hr%I z${zcxH$L&{FJ>=6{uje)YyXSs=zRSb)79P6`xo=3um3M*;O)D=n5ydMe=#*LUjD_@ z*3~!s#WXfG|HZVtY9$^$C0W+$V6Lac7dGc$Hjz$Y4Qt_ci zz#W8jdg#Wue`k1-D9W)O(EhfTD2q*Wk2D%P(;Rid+AcgK$+y(67jJ1F7S=4a!m~wN zJ5$Kc5l-RpiODDKJPA{ouVb=RPM0~K*w$q{jhX-D-#kLnxbV~Hpy zmH95D!}C(F;#!Z@uwtjVnpCvXl#xVqm~)cX?CcClA~&?Qwb?G=noqcwv#GP`sX>X{ z*x+{3bCX!F3m5o4+{l7@B!qdFdMzYDMo0^%F=3-!r-Mj|(YSDJl3g5pmO-*Zqy1FI z_8qniNg*ft-5vZ554+26ZK+h(qtzQd>f$S#_y>;e!&;k%o=!>e49j@tR~Q$Q%o3Qz)%}=0*+)jkSKB8$z{o6|v|*&bo>ul4HZ=bC;!J;umWg590+xq?!LZ8m!e_HH*`3CmYSHb@}NlkI(s zot)fU>gTz4X!-fQVGm$WB8>f}bD(0D)3X1$wQ=I?C;1w8V|Qb~XJe31PDn&}fDzus zt(yk`Iw~6Z&MW&13c34B-gb|&oJ%cF_75|sg`B7w^UKRnSKy(}B!h|r$BmWK^cxnZ z_}sl!3f!G2aapb>vYx!3yd6hLDfG(TbUTp{8dum=S^6ycr1q^Cz-sX+^P(jWSM~A7 z@uJMJ4wbnge;&hW=Q*(a<$B~abyzD;#uV=1BOhoEgmevh7CJ(Gc$RKWp-}#Jh}(z{ zFxQ>w9Mo@mo5}msJd@tF`((AEKpvP?348~KoJKL(rx zf9(i71yplsLfb?Q+1^$ttLo%p{JT0Ou+WkV?d9$P34)%cf&R268v_CiL{|!PiLU)u zsBO4GTm+{iCEk}GgyT>JdF$N45R|-~(g4B61AkQvWjD5DFeFYF_O5*AaaM-pejY z*a}5h6~_iYbD{Du8w@UkF;~FLRw?p7#LJ)XIE=jXbEv_48MJaH>&B=?BG(i|fjP@& z_+Te;%(|NxzmLwW+T_;(yehmDwca+~3-*#|D9rJ%8?G-D81)yd)E@?uBN&BgUaG#EGjMbAd=M z*9vs@Vmt0emEQg^QRv=%N#vw{>Sf{jUASt`hlxOVIxwi4{^ph-SzQC74|sCp{qBh7 zWgZXn2TNN5(|&@1FryI}#hrcGQHUtar#`pa(3*iinxBE@s(tiLm-sQq4r##IF|J== zklvfs+7`V7U3v#t2;GKg)gL-zk3Lu{7THAl-HhaN=e#h#PhWJn_4@~&U~NnK7Wg>) zU0zV(;K8~r6KJpssMh~c7dJ9&F zGMB+;Ma7X+q^w$?@iU&oDgs}S6&Xqhtj3Gmj}P0Z`$^0niVK8@ug)p$S{`n!%~~k5 z=J0E-iH~pi?tc0lpD1vUf|TS6_Ed1D5VK8J$l-)QF)gJRp9QnZmFRo#oWlKVeHl}) zssSluRlHo{&>cw$TkTbS{akSi* z*cJ5ovlUm3EDzC1HZ@5zik(0nzNcQr(n(<1p9gDeLZ@cERa`>|scAyI7E*dFUk;j@ z`8EXCL6!mRzAf1QsiH%1s<7>WcG9Iv8I=J4t4#gRBfg+<2Fxi{aiO_EKVT@iJA$uv zAb=6L(Rlw)JlIJb93YTTbwBoi!s$=KqI`)ll!7;zodIvhoIa_(KL-9Ht9_RlFc>L( zxvo`C*$qP7vLXvYJjiO^6#6vg{b0j6g-uIH;*?19AJI)|ngU?c&(oi;O4FS6%l6mN zLRiNLlk#lWT~^gw4V+@(;&U!;A~5Eg)xl&iAK!j4nLm^K0_IpcI36)bdBb#i79w{{ zoxgNiIMvwb(>IH>RAiNom%#6i{-m|c5>a_ff!WkK@ztz(@u(95o9t61xAG7KkKmJt zar5Ud{UdI<`PT>s%MVioCI7=bQ^i_GF;-*FH$=_umXF5pif90o(j(c}FW7no70R{2ejFkYs>aM$8|0trt zaL-hV=3DL22wz;Jz%kdC=x2Uq-p$rtXHUP^xc7yG%ZR)L8Wt<#Rjj)lpJ7c7(%qJu zK)>&(BLtO?3{hB4jUhSeZwPH!iqd3m_jnVMy2vcp`003(gZ`cPEbMTrG@(7ylA{Bj zAiXqHScM6{c92^LaJXP|M$@I(IBV^k21kHd#8=&N@z~e1+3$`C)jUeO7=uX)4iUHT zfD>2_@SoNbM;JW<*R&5892JRat%H!kCE|@tD%>^ZarSfl;{cs29H8BV^ozg|fg*RQ zGP&ec2>-VT=}z(@x9_Am=}H5zBr|6*^_#L@t^Wl}YCy zMqcR|Uw|a?Sy!FCZQx=yBIvSJYclVPkFlZ`DSl0xl{|< zz$bWhb1O7#%#g};ge{aJXRA=J4Os`07E*icE-TJes3iygI*XfwQ?6rPJ-$W=NjNAQ zA=VGkc_L9E!YOmFreS~TZQN5!txH_k<|E5GnBI8&0ua?A02-ipjf^uJosa zJ&S0o@jfQ$sCR{SL}QS5$96bZ7xJ`~rDj+=Ko1`D?)toKlY9(M@ky;Ybq%+XmfE46 z%Lr*COg9L#8&MT6lyKK-t+-&g}rD* zv|;kh1W{JBgoyH|RbC4G{YC6}@ijOo`4LOI8WLg~#Pz6yjg z^G@d#)~6_qFVQ|)SvnBd*&o`&a>TLC-ldiN#Ip%%hY*-MdDAJ1crWcj@WQsNS6;*e z+>y5in9fg2NsX=b%!4Ym56!lHy_7LZ5}j$BY-OB_}rFhv^ZI8 zT^*;rL}mTM|Fd9NQO2f6L0X{Mp7lcN!e{6aNlE?7>Nj-N8Y4^A_CNQRI<9erEhc7x zS(~~DJeW?nNp6ZRY=sPn7M0wPyDTO-drU6a0QSO~$~NJS%QOsJ0Q0nl4-^AWu9_*G z-hniKS;m(6lt$Uwy<>L9>Z~CpHPBPBfwgq#PFFz%q*SPC46U#50>+1_|5Mx|*$k!M zVBtFHEj@KvOU3AZ=gb&uX2ItSp{E5!fg*f0NueD@aDWzAGd_7L?s&r4$Zn z@!tDO>jP}sZ%yO}CpDUJPsyi{IEFFA0XZ&UYYt3`!s6{}-&q+!>`sZ2;)#$#`{}4N zwRUIRp+u%FC0o79_lDRvXc{rBho-ECM7f}lV7vWK$5 zFUmld4P+Mew>pvwWC|-G%mrgQj7!Z(o%;zyW$8=9#Rvt7w3I%NU2oE3k^ z;Ly*uZOuge=5%Jyv}@+sZ(+?5Ct{SRi43GVp_=Oc6i3&qL*dp4ve%gtKJt>>E#bx>IoIPvq=3#0_w&Qpd zqgPMsk&QUE1}d$C#XDjgZ6%q)DsV>?M5FI{90&^IgCnZ;rYJPOfS5%^-ZNTl{)sBi z+m2x2(%tR?gt3Cc1oTBkm5b9&lIp{_QFJ?O%GP^_mLZ~yx!d1%-oCJgm?A-wc4-Sq zGMh{560sZMTY8A-T&e>Yr$HxRGfFReCCF z$bOpsJcP_>VVT$%+Uj+pOfWtDKb*R<=`RO8heMU8V)-pBmz(043;6DIj4kN}$M>Q_ zXk^@lLs$H+mnkSKDBpc}0o049X_OY1Hm9=e?!!H7DH zlw=`a5$x&b@lBTx;c+{>L0bEtH}GV@2PY=n^aCAe`8tV)L1yOG*n?~)Wy@-I0lRKS1JX=>=K&U zwk-3RxGo|Z2p5liP`G9MO!5tk(zCPkNpcHk)%Wlsyl}SEQoxE@`puJrgBUBI<9MfV zFRe8$gptdWhyylrMwKVON8fzf4~GoGhnu3LiqIF?pISs3n#FppKiqJ#sgHdYm~kV- zA%bf9$f&6CTkyI_5nxA2o)2-O*krr4ZS&~#(SnUkp(3zx>0@;u|6`dgvg z6Ht3v?{38(=tJ|Pkmn$da8ZjrN;qIYh|zv)tqpv$ErM#68bGdk*fuocP)Ge)y_aX#)}xZTy4w1yH{14@$@?=gO$|%uYJ$OS?6%9mLc2fe{31u;~+Gm=10lIo83x< z+PAqahXOMT7Rl+BgkEbm>>#53QPli$loU4pFj#%0#X$G^Mq%|E=4X58Jf#x(Os72PmIOT-dzapDOA3X{H&7yrw16GVqaz(lV{|`;^!ce^86TaOb;lWnqZXacd)&)W#RgwP`CtS9o^goga&~C6T%#i^T?I~MsljQ9V z?x5Up^I(#}E6}lP&|@lHA*4J6$%xb_f_;Ke3l84zweX#J8!mXxEYcjsZj_c2skxnt zeoj$YR+z&XjbVD`R;o1`F}MXG{6xXdYPD9Qz?%K+A1ba#a(2C1yHTb`p|8O3*C$+~ zY~(gt=2O@Y_WNn@iT^>=m4`$5z3@}e% zDwRr7O$bRfC{cu2}9d?rykXvokP=xd$6%v?`^c;*{a>MF`~n#BLq;qAiLU{w8CA(7KWsU zl&P(O)?;xs@Rdhcx$Ge{QGH!;jL+gV;@8k$^7@KwMUJVUI-+e=Uk~1Ki)|!7oMPxq z(OWBk^%}4YYy!jk&d(+QD)s2`(3?UdP(%VMIj|bM>K3aO8~at1@#r7j*2CKafWxYU zwwVTvTE-NhES-%JFF72zO|ix=rUuR@&8XWasO9?e&F2P#^bIvrvxL_E$xffZ38Zz) zJ-~cMSosELzZyMKcCbL79vOt5jC7Xd%J`o}gw96ZJh~vaN zr9?;jnNOX)pB%CD)iz`Z27?WpGJdw%H{`keABe3;jtYFyB?e-XtrQKEQ&A00S{u)) z$I=e?zcR|UvjQ3B0hWz2 zD51O{S5H|-9nIuq?cW#JkusMzcH3$^mxwRu{hJOb`&RC$W#y#D{V0n&C9sL7yVy9| z2bSbznILF6C`}`oW^29WkQ>{7q$d|{nDsq zHwm4EvqU=^{3UPGn;UK1>);L*<0c;C)&di{UZ^C6X53S3wINGxZRS(Z4Unez6IX8n z*LT8KOoWtIyH8w&z!zM~S8x+wnB$vkG)G#!NcCTsb@v`n1XO@=fr)0XLpRc-z+?{9 z!Q`8p6l^YNr8_q_OA}3sYK_*L3rq?c*6Vgkuc#V-o}RSCprQ^{!i~pr3JPbO^SsqA z%!I?TCo^YJ88Q4AKAXaw3QLaR#qjX#`B=#vULkAED*SOo46k?RyP&+Dfst@Ee*H!{Xz%dMGW-wg1lCm0{)G!T&4p zzpY95X+v`Lbn>+IgevyI1B8l!8!jKi3c5+oK9mo$*jXRz9B6kpl9;=Y7|>2E{nw3i z)|+ohI*$jXfL+N8fKI!)yp!cQ>xWSKtFI>Iah4prAxc(vWrr*NpICK%-`b_`O-pK( zsUL8iq4>N%y$N%&B@jqD5_fmARbVct9gzq`eIqMpoerpMJep8$qWSnrxieu9oUK)# zlVFCY#ml@m^c*ODe_t*u-WI9fGQf88xY#M4>$UPg?^h}K^*37qHN0O@qh;shmB06y zjo(^+PUE0UieC@?%`vlc=E}FcU4zS(&2NagywN}D4+gHbrriZI7AB=#{%=V)0&=ZP zT}v1l(r4?6x9iZI>FU~!NDlft^tM)6QIL@ zFz7Nm^q+rjZ`LAfGxg;e`Vbv`QfgRMj1EH!17VQ#Z~pB0sjqK_&}Tx7qPX=};Z!Yc zEqU!xrsAG+8sDb7&Wd2Mu`l5$X9yyxCPSCn_fci#iZcSWe=ISI2$%6fkUr%eQ}&(j5dJ)uzU%D>2Vvws^+hq9stEYh1$aRJx4T2BKkF zu7WvPC#3VVJk4m|?S+-1)w=8Zvwz#9BHk&rT5EE-cR#N& ztT%A!NAcD=U*CQ%gP|a1$2Pq{siHvxcUvtzLvDS%#~oAnx%AvclaiU3O^aID8 z3nc+-pp_o=e|NpqxEj`mTy^V>Ts`X@#$lVkbly+eWbMecwDvRI#&vQC)7tU-#S+tQ z$!+}gOS|%isBdP!mmU=4EGG4p1}rZ1E&$VKhNhP~ldqAt>sRTfo*|^G+vlDR`?GZH zyXVTwNejlT zjppdZnP;CPD?>N-BmN*#e@cF%vL9=zegCR#B1tMR=zerB?rt0Q*@-r@rN^CvWJ~{pgnF&7jvH)A@vRB~?M)l@kx z8yy@J5?}jU>@k(PIwW?ye0^Y{GvcG%;F7JDy)w#;aK%=4%Y5#p93vk7Roj-}_$B3* zu{DZnLDzX2-VN6_v|Is9jjDOs1iRz!@=U>qeco_0?U$ad;UUSi&ZE40`Vr@3Z|sQ4 zJFmWi`8n4Q+5$`65cAVXtuClfiP?tC&;8?j#;){E97NcoHvj6QWADsH{q8scUT$Eb z{&3$Ko~i$F&RL-JV{Q5kt8RLI_0ptV?mpqvbp5LX^?twjcbWJ0agi@?y_rjWUzugF z_st}g6RjWa?nygiFt5-6Ch$&NJhc!yHyN%dgC|IyQHM( z?TRsdpZ1i3OZ-3swxwU2d%l#z>W5GdafR3e!*T)zc=l4aZ1(|_I77S-lC5%g@Za1P ztnEwI#r&7;o%0yZvMUtxtn7E&-gME*T!N@I>&*)XZQcHimnKCkQ{Ot%k@NLaw419x zFl%CvSE}+$1};^_HC4D|QPv0fa@ed}ts`4*vtbRJ@cm2%U>8jP~FLpmGxBn|}F58+X)`i>yI+Z^m z9aHXl>1!u%360iq+SX-oj{viJ!rdmzm{U}^zQ1eS$(NiM1Rk?n-lk!RnC`C)Tr+NH z+`Hxlnw~d(DOTA6nX_2}&Dhk>&Bt7NdXnF9ja(~+yfQCMI801v-Ca1)T1y{3j@&%e4>Fm zE}mXc^)D`bDZ7FzT0M6q$?I!ECabC#Fgv8o z++|l#_@>C6m7HkfZUf{n^8p!m8gs9yBBN9xmc#g02n{1z&*pIO=WSn{As9%C9^#lH zFH~!98oS6(J-`6@(=fxis!BrA#$A}*qrEd{wb*z{9?SpMnKdg4|4^G z_ZNYBrvw?_KpnOLg;#axim(1uYZ^5_mctjDEESuWp7o>qamNy>o~!_BPKWT+of{AG z)DAAzGe3Je*@tkW)k4&GXPSgUM%Pp=$}2fKF*vZqVF+%wtHdFW9i5{2$vdT?0d199 z<~v-x)+?FR29p9;R&Jj)1zm#=l~)v8D|M%ox~qD35w5w%4HPJB>kMpan%O|+fleD# z)qV@*ltIeKGhlo(-s*5Hiudl7Np1I$x)KP~KQ4=jRj-eVjb+@XPG}wxq5L7i@1yM} z%>>TEz_O9YpCLmpAypON>V~FNNOu~l8|3<+MjNtVrWSnKd{(hWmGRKw`k*t+dAT~1xniw>2guY{hQx`T~+j8LLT;9Sl zQ)6)jn11ABPQ+XV5k12lO=#beS+nyP+vTX-EPQkAm*G0maR+e2DH9g=Rm@H2(<6;% z$YvE_{^yaT$q8M9Iz)Uu{#DGYJ8Uf4rA zv9PFeLG!}9i~c`}X__h*Kb&n)Ij09Me1-I24XK>xoX=LVdXcJTwW5m;)4W*s=h#9r zIQZ}*IR2zjE=pLT7+BeXGTg;*tGxHUOP#U<_o0~%hWk^76JUp<4p9%i0!&S7A>w1B zO29j7v|gLAvoZcI9xUS#ng8N`#ut{ecxP%xvb?Fom%=^0;tT;{CO;Pv&~MvRz2p?D zVozK;jaNJzbTr@SygFH!7<7|oGy{5oUy za;WbO2m`4k^PvuJG2!U+y0fV3phm~*vXwll6G8JW{HY^kz+S_Dzu~gtx_2q}FCMj5 zYop-N(Q@|Iwo(A|qvZn9z{SeqFt6}VqU&>0Kx z{T6-}3n((EF8IyN#g;#Gj&v;gyhI=({DbolDyUxY!}6!wZZ(IseGNq9--qWmcQST| z0cdED&P1)oWZzp5iw5(_N+>0G9k=FDOs&B~xk!br{i?jh@?80Hzrq73uIiMUu36u_ za+RC67t?a-g2%sapnv86bpP(hdYw4t;hg&Y+-u}i5+d%}Xqw#u9dV+Y+~VM4Uh32Z zqeIUd_GCo@whXS7mjwJdqY)Kw#P4_2q>r%U z#v``Zgv0kdjud-4R38{pBDih;R(W*&-!l41AK+A}I^(nr^qq{)uDp0TQ@NEdXD)fI2H|4Vr!ex7@IrBq z!w#ysy=Uqq{b)3nJ#?h}Scl>PS;02BEi2{bvQ@_VH7e6Q%yPMdBmciaaMm3IKJ)0h z^}%^n)2daC%nq3qQgYm_f-DHl=c1;`B`-tq(edq_8~y+h{>jFxp;JHg+kx1@8couq zX2j}@+1l-N zcYzenTa|xbHKf5aokZ&*Z@3V%-;y36oX~JjMf@7Csl{`>f!ejPdM|4nFPEvKWHK2? zIJL=Cpeifqn)*$Ka_w5$U@bwUPaO#1p0A~o)p_FTeKSD%N6<=rHGIg`tZu&UPF;mM zYU4^dmFcn^zTh$$@C@~gO_y_#?Jro&N_3^7>5}j;aZ~bPb@%yIMc}#*xuS`1rDIv2 zm zz;lCOj6GP!K4?hhS8pNe#J-aoF8?kOT-&#zIy7u-IptFiE3l3suIx(OaF+w?4!@QxCr%GOu{F)i$cR>E{S!7dWeD&|~LuYcw^Wq8Y)%25G7} zudNNAOgl_}wM{lS%4Ph)?8U_n#FVb6lKy1L1CSnovO)=%DFREq6DPw3PTRkn%yIvA z*%MJA$Xd%drM^%k@Ur^OWo4g2v^@h@teruPeA7sF2z1?wzv_Zzz)#^$>A`V$Vc0d) z$Nf3&5f}F-$|O8)LU;>N@qX{j7HT^DPowwf>m3wcZhrUS!{F38AD?-hm8FfRw#dMU zE$cPm63t$}{$f>E1%Adqbei;EGCAA5x;pm!0#C93*y*TPW4%3jy{Gr+3g*=}^`5@1 zbHHHo#)F|?E}aS+ax*`DFDit*4fbx*mFxer4~jL#SHdSp4;gHCrO3$JBhWq<*}ewV zjm{iEuj;b7#YqO=dGK?iXDQ=wQ^e@LGYFUEa;<{KC2~Sv>bvF-7HmK^cq6)uB$mnh zBvWDvx}*IGocfhEv<2b%vZ$)!U!E1l>BtqxTc`{P%Tk=`Kezn$4DOlgpvyd|dI$`Z zOFDBFmkhf$Ts38B{8j#1Vowfgv3e>{*A)<$*X_k}Rmui=m5+nyOBh?^v;32hSc~JA zvSF(E_}!QLz#s8vjkaGKvfnmb)UFZ`gqiHSHg#ildsP1oJ@qZrVjnp;+;<(*@VoU2nSnYlh)R|5omI0S@DomU#=tgU z?vI5qjE18}4{>NZdf;OhhqQw5`e%d*AvCW1W4CeH(I;<%7cA@t)RRN%^(_p?@lEb0 zvZ@R!AtLQo@eYr_e>Jp6!K!2t)Io&!#N;C+>kI?6c#nxO{9L46ifh)W^BsHMtAHj& zz3)LXn65XeXP76Q@LkxJ^UoDdLF6E%z(R264v>pMN!jzF`o*ELjsNDvIe0Itf7vFL zie^u>(fj#^9TSK48WkUu7>NyzH!!I0eAMNS$|l$;PJI(UrB&f4k9Lhd#b~a)f=XD;WZCRvmi$< zwD1Q*`>Rl%%hSxGkmO>ACA0doTV{%1nERJz5ONqHDJjwB+{RXQpL5%Sk4k<(R}GQ@L^k`;=3v z`dioRmzcGd?f8iRzKcoI9%DRW$BEkPiM)rsEjn6-js7i+h*`dhZ*#GZI2<4zRjN{8x*nejI} z;buA&S0mt(vE-y+5_aHorPYQ@k|=NCo@8Bzf&D+^X$oewU8WxZs_#IcW!fGq>}{zTmIFl^*KNqMO21N|bXuqfI{_vx z(P2$l5k5<@I0%$Fxs$L3;uF)?S-5#I^s2p;lJ4_pn{ z*~Z};Re?ZK!CJjku{ z(ILp{evHhYzjgQaR{EotSlh4Y$wn2gvqOlju}eNK2!HjNLVX*LO&COYvB!{_tQA_$ zZkZUKa!pY!GeU8w{aPp$9+Lrk;>_ykjk^Q0pM2nj*7Z8^pYnV(A8X&n)_-aj<81Hj z)tZkUeh_B&V_&{JUTMSLQ;Lt8Rrn@+6Q}xPj%|zi*17o$uW$X{FW(01Qu`Q`GTqg^ zL}^1)Aqorho8-A`tP-$U{qc|1vLp;K=`vx5?HPEV;_PLuakO&-52t9P!QkIcjs_n) zAQkha!?*-}eN_L|iI7M6C1go1W5=i*6r%>?3FA;-d~R+5d&y-OV;#i`A>@ zt$3?-{rX{zKk*=v{skZ>PET}34LHmc`De?Iz7G-(h2YB+kJKp+r{@BR6)aVH*^47e z47`@tu9V^GnKpfwHj{MQ1s9hYXGi}}oMk=$CYS55bqfRww>?Uj# zk$Krya1+vQ_~&J?qo4Z=7u=Rhwu5j7=I*sSL9(dlzKcg5w9$IJQ=O9vwvLV=lAQHo>`Eq<#bMt^Co?`spt;sf5%g>Nv z2(rf{IZoa};hKaIyyPLeLW)7>8P-TK9O{Ck7!4VX6;h0*hUQkO-mSg-|LNT^%X=?4 z)xGku_mRYqdI5oP&s@rM$a_RuOYB(ogtV5LsU~SHv)%J!QneO@iz5)JT0*Kw%G7+t zUCMMVd_7wVLIqSn8l@ygL#Tj0#a`wmYOhs;!62#o*fVeb7u6n|Dw_W$(Yg}44s55fQRm|`y^OWR}= zz*UsCNrqvzgVd5d|3axHtdisksU>;58mT2UO?4eosttmsc`4K8HNM1 zim_I*-Y9t(E)VE{3`x~O%%deOw7i0U29cJN$yA1vgQ7XzUCMzGt|e8At5+z=oHDF4 zX_eYxF0h`GhzDkh9HbP+5iWFhDF+j8cd1(bu|e5VkexN*tx^ouy;y0BjIrlg65`1s z?gUzjk*8PqKa7&_3ModmWKog?qo%R0_m_rHk=l4agCNYtIii&Tlx%0ModmnQebF!X zLsk-5VMzg;u*B$e!r9`#eWcyd+%OK878XlPJA3Cw%6a4GY13lO2o@_PnnR0|o!(U-LU8c z<{h(glm;n^RXnhRhz{eLwe(E4Irv>mXiJ|`I&vi;&cBL0bLQoanAzRGDY0$anKTgV zq(bpzonc6XN`aX$;b557F4laM!e-)X;qRnOl2%Gc(7C29TSJn$wH7T0yAn>)b{~7C z;KN-^WxE7DkQ2~W(iWoCZaA;PBa)NZnYgg@ZwJ+duVhkorzX^Idyw^D$jmn^K05Qg zOQaqWckic4+G)HH2ue~O16y?)D2OBLJJsKVP}YVr{(%9mOy zM^RzPN&Tm+?#p~PDpuo@+q&ePGm;ESvTpbsSn(?fA6aB{nuV6npG@gjHMP;Gh zaY!)TI*leUyyJ11`-`KYW-SM)$nw1FzhJFwe1PW6X122#Dh5OJ}!KMIp)u_~21v zvjEgBBh=R$5WM|=Db&e=7PpKpA2 zXIVMxN4T|54dZX`yvODmyJr zMP;pjW0Fl|Qqu0Q47;rYbT=h2iF=+u`SR@fca)L){Cp?UF5R>U7LwBv7ZXqtEa*&& z*+GhMnJRy-s~~5tXN)2?Zizsv@9bYEDZ8=^qM?42JG88~0Gb;oAiAyQb~KQ*YJ?Hq zxS=AGqIq*xwY8N)de14ZUbH0t{Tvk;2wRn*f*3f{sOWa8S|P=dKPl&Z0aw1K|G;at zh^z`@nd4?iKza!E+WoI5%TdRQn#^QBP|+2h!xtagaFD8qy~e-xJ%&x$)r8S}r)K#_ z6_VKE^cy$iJ_@8!sm5+*?9R3>MXNm|_Vmz&MCV<)rVsM3 zq{qbsa!r-{?Vy}Yog`HjuKOO6LwkzyMbS8V!m$4}XTVeiA`M{eGQ zSdJX^DNuUBNie-Uxd{s+IhaHnM97lVVmZKf6O-(h#&dG=;BxidxTxuvNE9Jq**glC zZ*Px)%ecUw@LIzJz#BjO1(9|fnwnm(`H%f6l66F}8{c~xx~s4^Ds5X5=;x<&X&sK1 z55LF)I~N5)LQLa;xWNNFJs0TnT@i+yQO)!e2fkzViO!2j$#Ti{nI8q7s#$j^A1Oqz z(BvEC&1#Hp2(3$=l2rIuj!%gRl8cL=7>3F5w_^ZV0@5^XI;5A>O=^oq(K;x6r%v`X zsg>lLH2tu;ndBOt6rOYucMfOD4o^Cbt0%by8NvX81#Uw?Qxdy6MDEfwuCIoarIw{u zM`|F+wXxJ1DNX$`s&14T%Eh1CP3!rjy@etoqJUDYPeUfr(ny7gyu&r(KWt1Q@G zRRph5azD|=xC+X^Yf0GP0kunk)Hq}1dZC`n_VnifmAt8}(vW(!j;5G-<_ikDUo~b* z;|EQj)jlmp#O+b5&5uwE{8dx5nb;kfx?A%%0pZk6x*hpkqn-dXNZ&#tv_3reb*uI# z#B&i^L*!FDe^T*zN#w-=lzQvYy}JS1v5ZqBP0 zHC1pX>YSJ9?F3lIWX1=B&F*E+6W4;sh{79Np$4_@+r0}1p?R}I7Q7_pEMc}gU(){+ z^}a$#oZ_ft;klu-&oJaZvQz5M$Ji6nT=rDOywsOAE(oN)ba6_!BJD$oUgKA!{+zL9 zzD^$nW_l|ClBMO4LPVp~*P=V{|MTbMS*p~ZixlV3Qh!coFdU@5Rx4bOEA{7w6(&+& z+hE=*^|jXB%n_+ScbIiql=^e`6>lkpd5AwbNXmh}Q%{N!&SV8iF=Auc6;gkm+{~5w zb3w+0UkZIRTa;I*?q{T4QX%PA8uQ+uYqX^Ok2>=PDPQ--peAYmBepq1%BQu0-zeqN z(cLW(zi1tdvmrJa<9Lr*N^ZMnXWy7fByp zxwke&b$3!)#{xoj*1SDKkG*p;l0qv^J(_%VZz_Www17z@(Ij&$Sc*+5JEA?XO^2j& zq8wmK^39GJjydR3u%+6gd0N0a2c6eHa}Y-fsk>iB(hM^$0GsY<@3Ro4G|HLm$?rd6 z-Wp_=q*ApR+JQHv1PBfLW!h<*Xvg&H#}bE0`f1^hZfi#C>d=rKe2z_#ikn3lCa9z@ z)yq)O8FM&=behGUJ`--xsZY8e%Lj7OBQZB1kB(`Qp6xdM0T))q$0a1Qx51;lymQCHAE>Ghm6uj~os&|=t;9i}56>#dwUJB9d1xL>## z!Grn5v*oxxK>|7RBv$1HbRqr#V%lI%1MG z$9wCQPeu)SKGJBD&!;@z)5(_X?nE5$4{BcTPL^*^>K`0Z`;y`I$YVMpn$|*z6~v%M zp2WM-UL!)fQ^Ejd(FdRR<3k{sHW8-mRa_^5q(yvtGj_KQsx9lOuAmrizrija)^BFq zge*F8TW$Yz`F|%Co5GXw*-*7zD>3U73#U$X+SFlV3U2b8Ef8fCzb#igD0uAtvy1=Nnmt2$IaeGMgi|-DKX2CqsMLn5ujK8;w zx9fJom$Bb=Z!U%j|J`{65s%f(LRR*G$YAuJw8~G>#03OIi_-Hs8-;=h0DdOo{jD4R z(M>lR(Ve0r=|+ZzrT~{@*o-8otK==MS4!&!*@()kMOIyq>JJ%#wd z=0u)e-R&;|hRANiWZv7b&U7cS$9n4JS^z;19Qxk$4)cT~*ul{~#kIo5cY<~{%+uDx z5wPDjPivZVHsQAmBE+D352A-4%9(*w+|>I}Qi_1_o_p(@4LkPDq$uH>pJEo0fG#%) zX=lsf$=)z(Q109dzT#6wc{+r#5!|%Y`888Z4`Qfp(w~94IDO(jbL%{FCgaqHOiA!x zcW?ioofCP#Gs9Ui4{j%YP9n>F`o0M`XjcbD0=q}sZ=^RjmfDdAAyh^B=xV|q^{?-0 zlsZU;T0d{BW<$)a&C?MMkc@qMU${g>Cq#a2r>9{eP_1;c2PP~?x1k7?FV~dc^6|w8 zpcwX`vH8de^N(lVom1N|(O*f{Jz?s8G|<1!v0UlP@S+^k6<1M6@(|)%f}yrD4DW->JuFj4x5@#qQAWIKAoa*P1aQXli)^a?Q4HgjiS#+p%|Ibs#Y7}@s> z7-#WuU%70PI!V^n1eX#HEh`eji!W*cboZn;yYwK=r{AOBFPMFkiYTIwzWlqoA5kzW zR{d05`ze>KAQM(THAqQ7zfdp$pusvs<#oS%h=s|a!My1zEVJ@IOy64a&$WYj%VrOp zvxgLRhOb#?*OfX${08-c{o)rQiYuQBqSuHJ#;K3qn^i!EH&n|`n;Wt)NTB9?|HTL9 z$FB!ZAiS1Fj)#=3UK#=YMz4O_u&aMTXa*6=#OaR_)(@K z4=1hcSpg}>+!;c1Tu{tlCIW|V9s|}`>1DqcX2bJTCN!Bl5i^%Wfymj*W5k$?yr+dt zfEa7Wo~<*-c)UY$D{U#OMkU{^ZBXEDH&0VK#YWQZMlSx=@AS)8`fUk?pOh;C@MnS! zecmusUHA7hrR(JVGhB1Z@uL{sQ2&Ed>JaVp!Xux<)mHH1;v1MC-~4h^r8UzX^bl)e zI4vjt*UJ-sRquezmU#^7lE4RgF;7n5!pGyIWY_gwpaqY_OM!nshgbAh5Bw<~+{84S zb}GG0pDNo(oxqRfJ8W@f{M{hvry9>V1dpOq9u4H{@-%C2r*jRz5YTNDwtY&XhwTYZ z{Dbl}O0{P9nqS42l^X}@8d!%8f0+PisByPEK^H>4>1{q_?wYs5ZsE%SwD4oYjgeKf z0i(p82>tRfjE+?=?EUh`D20Ld>A8%tnC?GEe))Ao!)uKj{^;u!o3Bm5&3%GtPUQMu zLw&di^8T*ou9RQ>+1nuX%N^s3$5<@)!9xG}2$zCR7f@D^OMUF_Z&yN#Wtvph5rT%qAD zclV3B;MyJt5a>L+$H3y(9TIF_$%MMHr_I9d6k!eb9W6UG44qZ9dYTI^bQy6OgqWLT zGe1t{uy*WYtbwv*mNs)aifGdTfjsIDh~=vL9MaAnc2Rq)|3$ziw5qG5D#k zC9A6ZJNANr{A?Cydn(oLGMBmZeec(tTew|fStvR9+QR6RoMJ@7kn%wFa+RC%_w$hN zt)}vPX9&>j#ip6p>hRZuDZ(OnW33y@ z&fnuf=^foN4UUj+*;=hA84>^h@PjuSkC+CDO_2XP9C^I&}2o1WH*C{o{6=CyT4@lugOjp zo0~1UGhSFx)6gU>YwhU0H!=}tIc_q$u;117byod_ZQHhyF9I%?*}{IoAyAgSg+)F% zde4Gn106hX%CkbVz*>I6%eux}a#&@xiw_{&mweFfl(kQ{FMFtrg4Xeaeqm@Lcl(?uXmjxoPnN>x@f!Jpo1%!xF|%tf+;r!Tf^uq;|GM(6U5+F3v)YAy?A2pW9w$?-BkD}1-y80x^K@N^e@7ZZ#)2NIR;OmY?$o4KEyJ}xk>^*e}u zQKYiFyKEvn$|atqG@2~CE52yuF00Gxqj{Lg!FSI0q8iSu?R24hWuHL(d~@gL#k)T< zG-p~hE!#O(94h~!ic4?cwx>CVf7+vN)pn>byEs?h4*a8hEn0^+X?}K}cu=%p;BrrM zt+=Y6G;!AUn}r zq0?isF3krJd>;U~UVL!_4B!CR4zLHf18h+M(f;hPuRSl&;t*I<6;4+ zP8H#EJgC&O(}MwM512gd@&?IA0eYoLjzWoJmJ-$s>dOj zPa+F2(Ma~KoK*b?{w5T%fV=yv@us7rl!Vl{lQBgVu1Ri=k9=289xqZgpuM<9aJeiy zoN+$pbX<=`BHK9XcGk_rs?F*o{F_nTFM8?I@-dq;S$)x8A1gohpg7)roo6!05hq6| z=3Mx*>tXy&{RsQ$S@xH#qqPZ`Be5(19`np>cnPjolxX|Ovn=T^_DW>mlEzY2X};rg z8>Ohsh@6X*r%^dYJy|7M1=<@}K8|?hV&)@5yFs^5#vatid2@=MM!mBx!q;j?e5~7hV$*|PGvT4p z!!H2x*YeHYV3H31_|Dm|Gg$jwRNNcUE)wS5rVm&0cv^1^k7r#!j8MehCBXI(YY+3JO|N9G6;=z0_S1{b-Aq)uz`*uXn$KC#W1wAhlD7`_*OruJ=8eO$hXfEKUDB|53Iz)@M8` zam#kOI5!$4sb*9D$$*#w74QQ?yUDa$aHZ*R&EDywoDcFg#BL+s^bIN=llez&>A{>r zITzNsH@;T=sw@R)rmA9k#1Z_C>!iziMS`^BfNw+)E#K?f4PN}(y!LT4+(5k7GXKZLAC{d<}j?+;Qo88tk8xbR#nyg{%lwA@1&#L|u1Tpr_Q zM4?1x(jL7QLc8EIfd_u%mm=#w$3KEZJyfohZBN{5)*o&i9MzYsi?_)!kiS^FDScoc zENbD4!3zSwcXw1QTBGnfC*Bo*w;wQBtDd4ncg`;qZI}N;V8<11I*N4K^zdL?DeD2n z1`+Kncb#f*xGn#&$|iuumM_!)#9rq82h6&^Gwi^WdP~XgRs{i^JmW6_?$@`KeA6xw zAvER>ziluzolf$DE&0h-d5Z|w_h>go$X!{jss+4{e`azZ#Eg`Nd|==7zQ-(tqX7!w z#<7)7%E%1@4(Q8phJp|~yk~=rJvQwxNL7dHTuclI0QBse+lH@+4o0f%aP-XE^!=to zu$nTt0KYlt(llw;0U1;bwUs3cFa_Lg05vxO8dQM*AmePtW&dw}(OeaoaC#Wp*(;zz zJ_cdC12`r0#(R)u0->RNIb)CQvW2QGcO9Pp(%2K;yWtM^D~Bo*;gpo(HwtRJdN*1D zxP3W9tt2jCn@?(VN+!Q?{${!ErL%ih!*Gs?EUy@*lK<@w6lAVn?>BQiC? ze%FDA*n%6Yk&YU#{Z;|74lp_U*#XbwsB&AhV_Npv4UXS1+xp~oHO1hjB;!WVRpg@% zI`CS&VFMFJmQP`|xVkjp+jIQwVPM*0F7{~IDo%T_Z+G21cqxHdp14umapC=eV`!3ciau>a zFa0fUC?g|oHGd_tva~87F}5<1N;YJfQxXnWd1jV!*_P??=fT5aHNJE4F4w2&3?l0b z#$GREpT^&PX!+Fe3UqDe^&mp$xFegj`)U2HmVL!}gy(M2?Kh|RnOF;)>74{$d<=6# z6WnwBZ($THEIBTD`*8NaCN-Hl;1B(s?{`(~ASbQ45)PXR=W#sE;vlO_it6s!m;-X> z?#B?YB_(Q)pY_WTeI|njXVR)wuSX^YvvPNTrK`sk{kBVbb9>Xc$_3Bpj4NC9=HBx7 zg>=iTvhk}Yfg6ZXoaQLC`>INk)8Qe3^!>|dIvRq;kTxRpB=JY95t3p3Sh&aqnC|67 zN^`I^LDQ;5UO;Ol@!h}6C=^0Q4u&PkfMEzC8iz)pU>KN!BpPZ`x*QrsAj(iss#Fy! zf+^=kR~8Y07-QJnKe1RIi9{jcIQWKOM3FKS#)jdMjz~FW3u7Gx9m)Q~RU{q(QBzz*iJRlJ%c4#mlfQh{{m!8agxyr>-* zX)h-V1WCab-v+5kU^> z3&m^z1KQw!%y9l_vgE*ZERl}V;33&$89Y@EVfB!XcegFN!p6%SVov#_kg4lpG58IG zVaimb%=@53K%j^X66FCQ-wsBx01oD&T9D+4yJ)nUK2$;7$Wlf_QH7{O-h@*iTGF-I zy7Cx#apkk59Gc}g6H4~JfmK458XUHid?yB-DCgl+IEktVM_MWC;>c0(Mq>qBFL4|3 z=*vMd*n}&F=g#04U;Y72ZKvX=;~r!o`#|@s^@(dY26x;1qX%TJJX{J$dy&FC^ACR-%#E zLqpp_E?vpiQO~T!I@rj?(%2=QsAM4LqGY1rpcJhv7O#G`QP;w1Z;H|+hAElqncMhy z?c{D!bfbiSPJ2D)q2^NY`#~h(5gkJc9n#cgC`T)hAKmRyi z^ba71GaOVN1i@tf-vZK93O zzefApi!g!- zkJ9~gyxCSh#m7TO9QJ$ly0(@l5=TmkCSwSumIx|NjhMGChW^9qc>ATg$(=FYv`L}F zj1uJ*p=>9w5D{v=W8vQf95iolZ$n2yDo`LTdlGRvk+-dV@C-_(E(o1}!&=MFdgntq z7zr%{s15q02Jm)Nb>9z=U*6AO+-0ZJJr6i^1_cDk16J#=^bOf1e?;K%K*0U>z;qM{ zU^;z0|0940M1z#9=7eqlys;gCmi6dy08P^nhzv*b?h;$5zTQAUxEypQTgTqZ!Lee6 z=XR8`x&+xr2Ym5=m2MhXPMi1x)BLUYCqiiS!&V`lr}Lrp*<#0U%n z07Tah(ilg802j&ovsm)?|DU{U1_FpH$^ilZ;dcOrwt&hzfcbyoz=Fr(CCvXdcYU!< zRbl+QYw7J2-6}i~O<*y^KtiCyMKMgr*al3h%nj#^3EO46cQh;Q_4c;=gT`vf!e}sy zQNn`{J{ZFTQ4-83shW;IB5EQgJYc|N5FSQ`GT~uEx7FWwZcA?qQ=W`x`R;eV?|lEx zcmDM3r0E?V9>zPA_Q{*2OA$G-6fZRPTrz%3LY8bCPg=SZz8NXa3WTp!o{Nt=j7LVt z+|Z6sW=wPFj9va*0THRFEuf2x#Yaotou%8EO#El*z~VLW*_mkB{*sLdsxdNky%RHj zI8hQm=^T>dXPtOuc<&$5PuG25?--go@df(6U*5cGyjtp=iq*Ixw-WOHcBeKv?jB8- z51w8*9h(@JCRumE(8a62pz|?_5^`zUtWLB$5A5}NPv8)AyD5IwojG_I^^aiAoi;BI z-Fa=xtdg+s^0 z)#YXUuGj=zmrPt$t}l8eQ#dmDG5WvN-X3_P%8F?LIZ#X19~mPB2gWLqirdkAvn=;SB!*kkq~jKO!v!)L&g^WY* zu6VZMX}j4WH@yT7-}5x0bsO+`L!uS%RRP!lkO%>Cfsgx_7$y{2VlfNhi7FsQ>2w+m zSjD`Mv6=qO4ne=dL&B()FFAmrton~0TL`l@_J5*h!|E;bqE3BQUnJUicFi( zDx7C?3TCfpy62He<3E%fOfJi005yQ6Bxl|yDf2C+$r#Z)lSDOHSO%J*EIki!TMnQj z102||lo_JwIg(~FF~?kH3_n?o5{vVy;c%arp8}-9a*#9% zLHGk9wvmWhX>J+i)h{+Gxps=OGjt;N2cv@K3)^fw zL#t^mz$<`gqwvlBG=*#s76Y~(Jcv)7o`O#w^t**NXG2GSIh);x*+gXb@+z>eb<#>? zWi6ud;#y}F>JO5y7qEZY{cVRQg}UH>H?ToH$RC#`oF|)*FV1KH5%DN+*+2`SzbzXd zk2v=^mw%?L(aZH+5&2#X4*~oUB4z(g&<}wZK`%^O#^(21CB~*uuXu!t$LDc)%FQp1 zipR<79nU>3t)kDl=<_p{Xt|i}R(68W3P3V9TUfKyd5xFD-E!faM27+Pas~94MZDiZ ze^tc01Nw9k&-J}TKNj(Fw#(7B6u@P57FTC+eHJ%o@z#dsmm7R|hg!YQM@m;z(f!s7 z)o6D(+G&{lZZ!%8R3&0&`H`?{WUJ&0DP2DQPD3&JYl$|iW|I->tQB9JMk1Tl?z%uI ztZr5N5eZ)|@w#nQ48IaI>tNHs+}))ZxFIs3UQlizKJEdZDH-;GJ_@)9xIBw_bisku771jJo$R>P5ixiO+?s?p*f zQ1iU)=pR#}=Q{(UC07@cjX^)uEeA-NKWwT-PJmjJsJcD03BM155Ya&iD~#yZN - diff --git a/Source/php4DelphiD2005.stat b/Source/php4DelphiD2005.stat deleted file mode 100644 index 9ec5214..0000000 --- a/Source/php4DelphiD2005.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=3 -StartTime=21.09.2018 3:07:29 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD2007.dpk b/Source/php4DelphiD2007.dpk index 1810861..c112701 100644 --- a/Source/php4DelphiD2007.dpk +++ b/Source/php4DelphiD2007.dpk @@ -30,7 +30,7 @@ package php4DelphiD2007; {$DESIGNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl, designide, @@ -38,11 +38,11 @@ rrequires vclx, php4DelphiR2007; -ocontains +contains PHPProjectWizard in 'PHPProjectWizard.pas', php4DelphiReg in 'php4DelphiReg.pas', php4DelphiWeb in 'php4DelphiWeb.pas', phpWeb in 'phpWeb.pas', phpAbout in 'phpAbout.pas' {dlgAbout}; -d. +end. diff --git a/Source/php4DelphiD2007.dproj.local b/Source/php4DelphiD2007.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiD2007.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiD2007.stat b/Source/php4DelphiD2007.stat deleted file mode 100644 index 6bfe8ad..0000000 --- a/Source/php4DelphiD2007.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=3 -StartTime=21.09.2018 3:07:40 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD2009.dpk b/Source/php4DelphiD2009.dpk index d9f82a3..3627877 100644 --- a/Source/php4DelphiD2009.dpk +++ b/Source/php4DelphiD2009.dpk @@ -1,7 +1,6 @@ package php4DelphiD2009; {$R *.res} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} @@ -12,24 +11,22 @@ package php4DelphiD2009; {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} -{$OPTIMIZATION OFF} +{$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} -{$REFERENCEINFO ON} +{$REFERENCEINFO OFF} {$SAFEDIVIDE OFF} -{$STACKFRAMES ON} +{$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} -{$DEFINE DEBUG} -{$ENDIF IMPLICITBUILDING} {$DESCRIPTION 'php4Delphi (design-time)'} {$DESIGNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl, designide, @@ -37,11 +34,11 @@ rrequires vclx, php4DelphiR2009; -ocontains +contains PHPProjectWizard in 'PHPProjectWizard.pas', php4DelphiReg in 'php4DelphiReg.pas', php4DelphiWeb in 'php4DelphiWeb.pas', phpWeb in 'phpWeb.pas', phpAbout in 'phpAbout.pas' {dlgAbout}; -d. +end. diff --git a/Source/php4DelphiD2009.dproj b/Source/php4DelphiD2009.dproj index 440917d..f096ad0 100644 --- a/Source/php4DelphiD2009.dproj +++ b/Source/php4DelphiD2009.dproj @@ -1,123 +1,131 @@ - - - {65B66BBA-1F79-4212-AC10-21298E0BC3B0} - php4DelphiD2009.dpk - True - Debug - 1 - Package - VCL - 18.2 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - 00400000 - false - 1 - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) - 1058 - true - php4DelphiD2009 - false - false - false - true - true - php4Delphi (design-time) - false - true - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= - - - android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= - Debug - - - true - php4DelphiD2009_Icon.ico - 1033 - Debug - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - - - php4DelphiD2009_Icon.ico - - - RELEASE;$(DCC_Define) - false - 0 - 0 - - - DEBUG;$(DCC_Define) - true - false - - - - MainSource - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - Delphi.Personality.12 - Package - - - - php4DelphiD2009.dpk - - - - False - False - False - True - False - - - 12 - - - - + + + {65B66BBA-1F79-4212-AC10-21298E0BC3B0} + php4DelphiD2009.dpk + True + Debug + 1 + Package + VCL + 18.2 + Win32 + DCC32 + + + true + + + true + Base + true + + + true + Base + true + + + 0 + ..\..\..\..\Public\Documents\RAD Studio\6.0\Bpl\php4DelphiD2009.bpl + 00400000 + false + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + 1058 + true + php4DelphiD2009 + false + false + false + true + true + php4Delphi (design-time) + false + true + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + + + RELEASE;$(DCC_Define) + false + 0 + 0 + + + DEBUG;$(DCC_Define) + true + false + + + + MainSource + + + + + + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + Package + + + + php4DelphiD2009.dpk + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + False + False + False + True + False + + + 12 + + diff --git a/Source/php4DelphiD2009.dproj.local b/Source/php4DelphiD2009.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiD2009.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiD2009.stat b/Source/php4DelphiD2009.stat deleted file mode 100644 index 7cf7048..0000000 --- a/Source/php4DelphiD2009.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=3 -StartTime=21.09.2018 13:22:02 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD2010.dpk b/Source/php4DelphiD2010.dpk index 6d19017..f322623 100644 --- a/Source/php4DelphiD2010.dpk +++ b/Source/php4DelphiD2010.dpk @@ -34,27 +34,15 @@ requires vcl, designide, vclactnband, - vclx; + vclx, + php4DelphiR2010; contains PHPProjectWizard in 'PHPProjectWizard.pas', - { Components Requirements } - DelphiFunctions in 'DelphiFunctions.pas', - phpLibrary in 'phpLibrary.pas', - PHPCommon in 'phpCommon.pas', - phpFunctions in 'phpFunctions.pas', - ZENDTypes in 'ZENDTypes.pas', - phpClass in 'phpClass.pas', - php4delphi in 'php4delphi.pas', - phpModules in 'phpModules.pas', - phpAPI in 'phpAPI.pas', - ZENDAPI in 'ZENDAPI.pas', - PHPTypes in 'PHPTypes.pas', - { Components Requirements } php4DelphiReg in 'php4DelphiReg.pas', php4DelphiWeb in 'php4DelphiWeb.pas', phpWeb in 'phpWeb.pas', - phpAbout in 'phpAbout.pas' { dlgAbout }; + phpAbout in 'phpAbout.pas' {dlgAbout}; end. diff --git a/Source/php4DelphiD2010.dproj.local b/Source/php4DelphiD2010.dproj.local deleted file mode 100644 index a169e93..0000000 --- a/Source/php4DelphiD2010.dproj.local +++ /dev/null @@ -1,6 +0,0 @@ - - - - 1899.12.30 00:00:00.000.520,D:\переустановил\Рабочий стол 08.07.4016\soulengine-5554e3db061d08b94f439be26ed071a74c30071c\php4delphi\php4DelphiD2010.dproj=D:\переустановил\Рабочий стол 08.07.4016\soulengine-5554e3db061d08b94f439be26ed071a74c30071c\php4delphi\php4DelphiD2010.dproj - - diff --git a/Source/php4DelphiD2010.identcache b/Source/php4DelphiD2010.identcache deleted file mode 100644 index 4f6504a0b4d282d4dec9190c7477d605440ffac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmb`H$qs@r6h-+2zr>X*93lY~6EwsjB&HjN7pVc-bTGlM7tpvUxM;P@w>Y`)zLSnD z%W_;BojEX$0=OfOq_TucaJ0d~mkFXdon%nZ9HS$VEQN03b&~^J$28^*nN0 z0sJ4RcT^QM)lGF-?L8;ls+^fFr)keEV&2=$HULGCsChhHOz4LpBR5DzgdZ`>RG`WE z0-Ugz)hf!>&GvF?Evr;uQuQjE>+;$go@&|`%jAkqLZnbvTUP>SHF6F1{lgD4;QSL>A%d6y diff --git a/Source/php4DelphiD2010.stat b/Source/php4DelphiD2010.stat deleted file mode 100644 index 7701441..0000000 --- a/Source/php4DelphiD2010.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=240 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=45492 -OtherSecs=256 -StartTime=04.03.2019 21:55:53 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD5.dproj.local b/Source/php4DelphiD5.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiD5.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiD5.stat b/Source/php4DelphiD5.stat deleted file mode 100644 index 3137e8d..0000000 --- a/Source/php4DelphiD5.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=80 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=8334 -OtherSecs=82 -StartTime=21.09.2018 3:07:20 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD6.dpk b/Source/php4DelphiD6.dpk index fb713db..a1312f7 100644 --- a/Source/php4DelphiD6.dpk +++ b/Source/php4DelphiD6.dpk @@ -30,16 +30,17 @@ package php4DelphiD6; {$DESIGNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, + vcl, designide, php4DelphiR6; -ocontains +contains PHPProjectWizard in 'PHPProjectWizard.pas', php4DelphiReg in 'php4DelphiReg.pas', phpWeb in 'phpWeb.pas', php4DelphiWeb in 'php4DelphiWeb.pas', phpAbout in 'phpAbout.pas' {dlgAbout}; -d. +end. diff --git a/Source/php4DelphiD6.dproj.local b/Source/php4DelphiD6.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiD6.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiD6.stat b/Source/php4DelphiD6.stat deleted file mode 100644 index 5f3a5ae..0000000 --- a/Source/php4DelphiD6.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=2 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=3 -StartTime=21.09.2018 3:07:24 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiD7.cfg b/Source/php4DelphiD7.cfg new file mode 100644 index 0000000..290f5ea --- /dev/null +++ b/Source/php4DelphiD7.cfg @@ -0,0 +1,40 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-DDEBUG +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Source/php4DelphiD7.dof b/Source/php4DelphiD7.dof new file mode 100644 index 0000000..bc67b09 --- /dev/null +++ b/Source/php4DelphiD7.dof @@ -0,0 +1,136 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=php4Delphi (design-time) +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals=DEBUG +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1058 +CodePage=1251 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/Source/php4DelphiD7.dproj.local b/Source/php4DelphiD7.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiD7.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiD7.stat b/Source/php4DelphiD7.stat deleted file mode 100644 index 40ad9b8..0000000 --- a/Source/php4DelphiD7.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=57 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=20209 -OtherSecs=85 -StartTime=21.09.2018 13:19:38 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR2005.dpk b/Source/php4DelphiR2005.dpk index 4385116..bdd3e86 100644 --- a/Source/php4DelphiR2005.dpk +++ b/Source/php4DelphiR2005.dpk @@ -30,22 +30,20 @@ package php4DelphiR2005; {$RUNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl; -ocontains +contains ZENDAPI in 'ZENDAPI.pas', DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', PHPCommon in 'PHPCommon.pas'; - -d. +end. diff --git a/Source/php4DelphiR2005.dproj.local b/Source/php4DelphiR2005.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR2005.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR2005.stat b/Source/php4DelphiR2005.stat deleted file mode 100644 index 55185f1..0000000 --- a/Source/php4DelphiR2005.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=1 -StartTime=21.09.2018 3:08:04 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR2006.dpk b/Source/php4DelphiR2006.dpk index 124371d..6bb00b2 100644 --- a/Source/php4DelphiR2006.dpk +++ b/Source/php4DelphiR2006.dpk @@ -30,22 +30,21 @@ package php4DelphiR2006; {$RUNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl; -ocontains +contains ZENDAPI in 'ZENDAPI.pas', DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', PHPCommon in 'PHPCommon.pas'; -d. +end. diff --git a/Source/php4DelphiR2006.dproj.local b/Source/php4DelphiR2006.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR2006.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR2006.stat b/Source/php4DelphiR2006.stat deleted file mode 100644 index 3cba0bc..0000000 --- a/Source/php4DelphiR2006.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=1 -StartTime=21.09.2018 3:08:05 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR2007.dpk b/Source/php4DelphiR2007.dpk index bd7459e..05939e5 100644 --- a/Source/php4DelphiR2007.dpk +++ b/Source/php4DelphiR2007.dpk @@ -30,22 +30,21 @@ package php4DelphiR2007; {$RUNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl; -ocontains +contains ZENDAPI in 'ZENDAPI.pas', DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', PHPCommon in 'PHPCommon.pas'; -d. +end. diff --git a/Source/php4DelphiR2007.dproj.local b/Source/php4DelphiR2007.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR2007.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR2007.stat b/Source/php4DelphiR2007.stat deleted file mode 100644 index 6544ade..0000000 --- a/Source/php4DelphiR2007.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=1 -StartTime=21.09.2018 3:08:16 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR2009.dpk b/Source/php4DelphiR2009.dpk index ec35688..e7e09aa 100644 --- a/Source/php4DelphiR2009.dpk +++ b/Source/php4DelphiR2009.dpk @@ -2,7 +2,6 @@ package php4DelphiR2009; {$R *.res} {$R 'php4delphi.dcr'} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} @@ -13,39 +12,36 @@ package php4DelphiR2009; {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} -{$OPTIMIZATION OFF} +{$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} -{$REFERENCEINFO ON} +{$REFERENCEINFO OFF} {$SAFEDIVIDE OFF} -{$STACKFRAMES ON} +{$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} -{$DEFINE DEBUG} -{$ENDIF IMPLICITBUILDING} {$DESCRIPTION 'php4Delphi (run-rime)'} {$RUNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl; -ocontains +contains ZENDAPI in 'ZENDAPI.pas', DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', PHPCommon in 'PHPCommon.pas'; -d. +end. diff --git a/Source/php4DelphiR2009.dproj b/Source/php4DelphiR2009.dproj index 818ccc6..1f38f11 100644 --- a/Source/php4DelphiR2009.dproj +++ b/Source/php4DelphiR2009.dproj @@ -1,110 +1,139 @@ - - - {B0FA1B58-2442-42C7-83BD-6DD3D0CE3CF8} - php4DelphiR2009.dpk - True - Debug - 1 - Package - VCL - 18.2 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - 1 - php4Delphi (run-rime) - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) - php4DelphiR2009 - true - 1049 - false - true - true - true - false - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= - 00400000 - false - false - false - - - android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - - - php4DelphiR2009_Icon.ico - 1033 - true - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - - - 0 - false - RELEASE;$(DCC_Define) - 0 - - - true - false - DEBUG;$(DCC_Define) - - - - MainSource - - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - Delphi.Personality.12 - Package - - - - php4DelphiR2009.dpk - - - - False - True - - - 12 - - - - + + + {B0FA1B58-2442-42C7-83BD-6DD3D0CE3CF8} + php4DelphiR2009.dpk + True + Debug + 1 + Package + VCL + 18.2 + Win32 + DCC32 + + + true + + + true + Base + true + + + true + Base + true + + + 0 + false + ..\..\..\..\Public\Documents\RAD Studio\6.0\Bpl\php4DelphiR2009.bpl + php4Delphi (run-rime) + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + php4DelphiR2009 + true + 1049 + false + true + true + true + false + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + 00400000 + false + false + false + + + 0 + false + RELEASE;$(DCC_Define) + 0 + + + true + false + DEBUG;$(DCC_Define) + + + + MainSource + + + + + + + + + + + + + + + + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + Package + + + + php4DelphiR2009.dpk + + + False + True + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + False + True + + + 12 + + diff --git a/Source/php4DelphiR2009.dproj.local b/Source/php4DelphiR2009.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR2009.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR2009.res b/Source/php4DelphiR2009.res index b946c3cf4737f4cfe63fa0bc6b919aa29fe155e5..4ed2b323e18cf6de8d1fcabf8a5f7f57159fa833 100644 GIT binary patch delta 673 zcmZ8f!AiqG5Pc~*c#Ow-k{}8qrE2aTY=wf@VkK7zT4S(HL%JS3<%dN40l{zZ7yJPK z!1`u3YiKs??(EK+H*aS18h#$UA8l8r1MC7=uLDkx77zrXuLc*>iMYm?;+E?W*R)0$ zxC6%omxK$* zVvf;cdN-W_5o#2hGx@wFVP6GY(x0kVdl5k%^zvyo1k|6?do^5GTVMhCtYw72dXqy;Z9cb YpunE~4O(KCfh(#{>i4j%4*hTc4^o<3bN~PV delta 7 OcmX@0zD8+-jvxRGjsl|q diff --git a/Source/php4DelphiR2009.stat b/Source/php4DelphiR2009.stat deleted file mode 100644 index 32ee432..0000000 --- a/Source/php4DelphiR2009.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=1 -StartTime=21.09.2018 3:08:17 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR2010.dproj.local b/Source/php4DelphiR2010.dproj.local deleted file mode 100644 index 2c5c945..0000000 --- a/Source/php4DelphiR2010.dproj.local +++ /dev/null @@ -1,6 +0,0 @@ - - - - 1899.12.30 00:00:00.000.755,C:\Users\User\Desktop\soulengine-5554e3db061d08b94f439be26ed071a74c30071c\php4delphi\php4DelphiR2010.dproj=C:\Users\User\Desktop\soulengine-5554e3db061d08b94f439be26ed071a74c30071c\php4delphi\php4DelphiR2010.dproj - - diff --git a/Source/php4DelphiR2010.identcache b/Source/php4DelphiR2010.identcache deleted file mode 100644 index 1dac930ecb535057e1680df202d4aaf389edca0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmbu7I}5@v6h^cAU!0uk10_)_R4J&7+@(ze4KxpuM(Dpc6>&)Gkecxhhw~jWLkMkf z0(Z-dg^WFcDCz{0t%W0RQ&)nn^`c^pt~p$lGnDn0v#MOf>|7Vt6TWW>>H`l^s|i-P zDeV7Fd75XuG==FxCmicU-rWvP(v~YZP+Q0H9{UTqb$S?n8%y#de`+NYV7vSj)>_75 Y`gJ3m=t_PYRzfHl8b$vpPa4hr0{b`y3IG5A diff --git a/Source/php4DelphiR2010.stat b/Source/php4DelphiR2010.stat deleted file mode 100644 index 92d1072..0000000 --- a/Source/php4DelphiR2010.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=4262 -DesignerSecs=1 -InspectorSecs=3 -CompileSecs=138371 -OtherSecs=477 -StartTime=29.07.4016 22:02:01 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR5.dpk b/Source/php4DelphiR5.dpk index e1c6298..555ae25 100644 --- a/Source/php4DelphiR5.dpk +++ b/Source/php4DelphiR5.dpk @@ -38,13 +38,12 @@ contains DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', + phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', - phpFunctions in 'phpFunctions.pas', + PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', - phpModules in 'phpModules.pas', PHPCommon in 'PHPCommon.pas'; END. diff --git a/Source/php4DelphiR5.dproj.local b/Source/php4DelphiR5.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR5.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR5.identcache b/Source/php4DelphiR5.identcache deleted file mode 100644 index ad5b648ef899d1efd57807697fcece7e57628518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmd;KU|>*mwu(t9E>4Xp$S5#LNzEz9$V6i56(kk|6~Tc57S#bB0nYikx%qj-D2{UV za|x*|NG(QJjLjWDlYKIiiV}+|(N!yBaR<-?Zl!t2C7Jno7^bUZSMOX}T#}!Q!wxkp zdR)K(gwq;%ELwoha?VLC#&D7>7PUYRI|g{7dlp;J08RDHPbtm83`jXF=7K^Ui^15O K3v>e3_yGV9u9si{ diff --git a/Source/php4DelphiR5.stat b/Source/php4DelphiR5.stat deleted file mode 100644 index 7e8d660..0000000 --- a/Source/php4DelphiR5.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=96 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=9481 -OtherSecs=55 -StartTime=21.09.2018 3:07:56 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR6.dpk b/Source/php4DelphiR6.dpk index b96a100..78e7aa7 100644 --- a/Source/php4DelphiR6.dpk +++ b/Source/php4DelphiR6.dpk @@ -30,22 +30,21 @@ package php4DelphiR6; {$RUNONLY} {$IMPLICITBUILD OFF} -rrequires +requires rtl, vcl; -ocontains +contains ZENDAPI in 'ZENDAPI.pas', DelphiFunctions in 'DelphiFunctions.pas', php4delphi in 'php4delphi.pas', PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', - ZendTypes in 'ZendTypes.pas', - phpTypes in 'phpTypes.pas', + PHPTypes in 'PHPTypes.pas', + ZENDTypes in 'ZENDTypes.pas', phpClass in 'phpClass.pas', PHPCommon in 'PHPCommon.pas'; -d. +end. diff --git a/Source/php4DelphiR6.dproj.local b/Source/php4DelphiR6.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR6.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR6.stat b/Source/php4DelphiR6.stat deleted file mode 100644 index 0c40d2a..0000000 --- a/Source/php4DelphiR6.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=1 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=1 -OtherSecs=1 -StartTime=21.09.2018 3:07:52 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4DelphiR7.cfg b/Source/php4DelphiR7.cfg new file mode 100644 index 0000000..290f5ea --- /dev/null +++ b/Source/php4DelphiR7.cfg @@ -0,0 +1,40 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W+ +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-DDEBUG +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Source/php4DelphiR7.dof b/Source/php4DelphiR7.dof new file mode 100644 index 0000000..f3d0e61 --- /dev/null +++ b/Source/php4DelphiR7.dof @@ -0,0 +1,136 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=1 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=php4Delphi (run-rime) +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals=DEBUG +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1058 +CodePage=1251 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/Source/php4DelphiR7.dpk b/Source/php4DelphiR7.dpk index cbc7fef..dc295fa 100644 --- a/Source/php4DelphiR7.dpk +++ b/Source/php4DelphiR7.dpk @@ -41,7 +41,6 @@ contains PHPAPI in 'PHPAPI.pas', phpModules in 'phpModules.pas', PHPLibrary in 'PHPLibrary.pas', - phpCustomLibrary in 'phpCustomLibrary.pas', PHPFunctions in 'PHPFunctions.pas', PHPTypes in 'PHPTypes.pas', ZENDTypes in 'ZENDTypes.pas', diff --git a/Source/php4DelphiR7.dproj.local b/Source/php4DelphiR7.dproj.local deleted file mode 100644 index b3811b7..0000000 --- a/Source/php4DelphiR7.dproj.local +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/Source/php4DelphiR7.identcache b/Source/php4DelphiR7.identcache deleted file mode 100644 index 5416a4118405a623d0c0f6bb70852ad19a744896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmb`F%L>9U5Jmd|ev2#dQ3NfmT0tcX-AFcl1R7`_WD=x*Z*-xM)Wv|apToUpW|AaH zny2&z%mB?~YuJMps&Rrz3-rKk>1wJwJ!@I7J5EVSPP{gi8K$}dzx|mN26NwCitC^m zgp>`2QoJ+moop;uGGZ+;EZ;HjD~KQ{J6};@FH{yUc~lNI%UQLqj~#EZUL05@{&99+ hELTD(8S0s1B6&(ijv-=!LA?HNgt5jje2ky3_XI254c7nw diff --git a/Source/php4DelphiR7.stat b/Source/php4DelphiR7.stat deleted file mode 100644 index d2541d1..0000000 --- a/Source/php4DelphiR7.stat +++ /dev/null @@ -1,10 +0,0 @@ -[Stats] -EditorSecs=157 -DesignerSecs=1 -InspectorSecs=1 -CompileSecs=5944 -OtherSecs=23 -StartTime=21.09.2018 3:08:01 -RealKeys=0 -EffectiveKeys=0 -DebugSecs=1 diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index d1fa8cf..c999320 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -36,13 +36,50 @@ interface uses - Windows, Messages, SysUtils, System.Types, Classes, VCL.Graphics, - PHPCommon, WinApi.WinSock, + Windows, Messages, SysUtils, + {$if CompilerVersion > 21} + System.Types, + {$else} + Types, + {$ifend} + Classes, + {$if defined(REGISTER_COLOURS) or defined(php_side_handler)} + + {$if defined(LCL) or (defined(VCL) and (CompilerVersion < 22))} + Graphics, + {$ifdef php_side_handler} + Dialogs, + {$endif} +{$elseif defined(KYLIX)} + QGraphics, + {$ifdef php_side_handler} + QDialogs, + {$endif} +{$elseif defined(FMX)} + FMX.GraphConsts, + {$ifdef php_side_handler} + FMX.Dialogs, + {$endif} +{$elseif defined(VCL)} + VCL.Graphics, + {$ifdef php_side_handler} + VCL.Dialogs, + {$endif} +{$ifend} + {$ENDIF} + PHPCommon, + {$if CompilerVersion > 21} + WinApi.WinSock, + {$else} + WinSock, + {$ifend} + ZendTypes, PHPTypes, PHPAPI, ZENDAPI, - DelphiFunctions, phpFunctions, strUtils, varUtils, - {$IFDEF PHP_UNICODE}WideStrUtils, {$ENDIF} - {$IFDEF php_side_handler} {$IFDEF FMX}FMX.Dialogs{$ELSE}VCL.Dialogs{$ENDIF}, {$ENDIF} - System.UITypes; + DelphiFunctions, phpFunctions, strUtils, varUtils + {$IFDEF PHP_UNICODE}, WideStrUtils{$ENDIF} + {$if CompilerVersion > 21} + , System.UITypes + {$ifend}; type @@ -197,7 +234,11 @@ TPHPEngine = class(TPHPComponent, IUnknown, IPHPEngine) private FINIPath : zend_ustr; FOnEngineStartup : TNotifyEvent; + {$if CompilerVersion > 21} FAddMods : TArray; + {$else} + FAddMods : array of Pzend_module_entry; + {$ifend} FOnEngineShutdown : TNotifyEvent; FEngineActive : boolean; FHandleErrors : boolean; @@ -1739,7 +1780,7 @@ procedure TPHPEngine.ShutdownEngine; except end; - {$ENDIF} + {$ifend} FHash.Clear; finally FEngineActive := false; @@ -1854,9 +1895,9 @@ procedure TPHPEngine.StartupPHP; if not PHPLoaded then begin if FDLLFolder <> '' then - DLLName := IncludeTrailingBackSlash(FDLLFolder) + PHPWin + DLLName := IncludeTrailingBackSlash(FDLLFolder) + PHPlp else - DLLName := PHPWin; + DLLName := PHPlp; LoadPHP(DLLName); if FReportDLLError then begin diff --git a/Source/phpClass.pas b/Source/phpClass.pas index 3770112..0c9f39b 100644 --- a/Source/phpClass.pas +++ b/Source/phpClass.pas @@ -643,6 +643,7 @@ function TClassProperty.GetAsInteger: integer; var c: CharPtr; begin +{$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; @@ -650,6 +651,15 @@ function TClassProperty.GetAsInteger: integer; finally FormatSettings.DecimalSeparator := c; end; +{$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + Result := Round(ValueToFloat(FValue)); + finally + DecimalSeparator := c; + end; +{$ifend} end; function TClassProperty.GetDisplayName: string; @@ -677,6 +687,7 @@ procedure TClassProperty.SetAsInteger(const Value: integer); var c: CharPtr; begin +{$if CompilerVersion > 21} c := FormatSettings.DecimalSeparator; try FormatSettings.DecimalSeparator := '.'; @@ -684,6 +695,15 @@ procedure TClassProperty.SetAsInteger(const Value: integer); finally FormatSettings.DecimalSeparator := c; end; +{$else} + c := DecimalSeparator; + try + DecimalSeparator := '.'; + FValue := IntToStr(Value); + finally + DecimalSeparator := c; + end; +{$ifend} end; diff --git a/Source/phpModules.pas b/Source/phpModules.pas index 6c12fa1..fdff4f1 100644 --- a/Source/phpModules.pas +++ b/Source/phpModules.pas @@ -16,7 +16,17 @@ interface uses - SyncObjs, {$IFNDEF FPC} Windows, {$ELSE} LCLType,LCLIntf,dynlibs,LCLProc,{$ENDIF} SysUtils, Types, Classes, VCL.Forms, VCL.Consts, + SyncObjs, {$IFNDEF FPC} Windows, {$ELSE} LCLType,LCLIntf,dynlibs,LCLProc,{$ENDIF} SysUtils, Types, Classes, + {$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms, VCL.Consts, + {$elseif defined(FMX)} + FMX.Forms, FMX.Consts, + {$elseif defined(KYLIX)} + QForms, QConsts, + {$elseif defined(VCL) or defined(LCL)} + Forms, Consts, + {$ifend} + PHPCommon, {$IFDEF VERSION6}RTLConsts, Variants,{$ENDIF} ZendAPI, phpAPI, phpFunctions, @@ -456,7 +466,7 @@ constructor TPHPExtension.Create(AOwner: TComponent); try if Assigned(OnCreate) and OldCreateOrder then OnCreate(Self); except - VCL.Forms.Application.HandleException(Self); + Forms.Application.HandleException(Self); end; end; end; @@ -467,13 +477,13 @@ constructor TPHPExtension.Create(AOwner: TComponent); procedure DoneVCLApplication; begin try - VCL.Forms.Application.OnException := nil; + Forms.Application.OnException := nil; {$IFDEF WINDOWS} - if VCL.Forms.Application.Handle <> 0 then ShowOwnedPopups(VCL.Forms.Application.Handle, False); + if Forms.Application.Handle <> 0 then ShowOwnedPopups(Forms.Application.Handle, False); {$ELSE} - VCL.Forms.Application.ShowHint := False; - VCL.Forms.Application.Destroying; - VCL.Forms.Application.DestroyComponents; + Forms.Application.ShowHint := False; + Forms.Application.Destroying; + Forms.Application.DestroyComponents; {$ENDIF} except end; @@ -607,7 +617,7 @@ procedure TPHPApplication.OnExceptionHandler(Sender: TObject; procedure TPHPApplication.Run; begin - VCL.Forms.Application.OnException := OnExceptionHandler; + Forms.Application.OnException := OnExceptionHandler; end; diff --git a/php4Delphi.pdf b/php4Delphi.pdf deleted file mode 100644 index b88790c9594403975fa8ad4e010168f618d7117a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221817 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%0D=vRx66GnS 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

p(8fClFi$o=0BCsOG*m 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

4b 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�HSK=E{jl`v~!2?ad{Rv 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 From e6cb7b4053d7e98856a3bd9f0b59dfcbbbc34942 Mon Sep 17 00:00:00 2001 From: lion Date: Sat, 18 Jul 2020 18:16:52 +0300 Subject: [PATCH 30/35] readme.txt -> README.md: /r/ --- readme.txt => README.md | 502 ++++++++++++++++++++-------------------- 1 file changed, 251 insertions(+), 251 deletions(-) rename readme.txt => README.md (94%) diff --git a/readme.txt b/README.md similarity index 94% rename from readme.txt rename to README.md index f24d7d9..353fc1e 100644 --- a/readme.txt +++ b/README.md @@ -1,251 +1,251 @@ - PHP4Delphi library -PHP - Delphi interface and PHP extensions development framework - -{ $Id: readme.txt,v 7.4 07/2020 delphi32 Exp $ } - -PHP4Delphi is a Delphi interface to PHP for Delphi {2007, ..., Berlin} - -PHP4Delphi consists of 3 big subprojects: - -1. PHP scripting (using PHP as a scripting language in Delphi applications) -PHP4Delphi allows to execute the PHP scripts within the Delphi program using -TpsvPHP component directly without a WebServer. -It is a PHP extension that enables you to write client-side GUI applications. -One of the goals behind it was to prove that PHP is a capable general-purpose scripting -language that is suited for more than just Web applications. -It is used by "Delphi for PHP" from CodeGear. - -2. PHP extensions development framework (using Delphi to extend PHP functionality) -Visual Development Framework gives possibility to create custom PHP -Extensions using Delphi. -PHP extension, in the most basic of terms, is a set of instructions that is -designed to add functionality to PHP. - -3. PHP4Applications (integrate PHP in any application) -Supports C, C++, Visual Basic, VBA, C#, Delphi, Delphi .NET, Visual Basic .NET etc. - - -More detail information available in php4Delphi manual php4Delphi.pdf - - -This is a source-only release of php4Delphi. It includes -design-time and run-time packages for Delphi 2007 through Delphi Berlin - - - -History: -7.4 Mar 2019 - -* Compatible with PHP 5.5.0 -* Compatible with PHP 5.6.0 -* Compatible with PHP 5.6.x -* Compatible with Delphi 2011, XE8, Seattle, Berlin -* Added unicode support - -7.3 Jan 2019 - -* Compatible with PHP 5.4.0 - -7.2 Oct 2009 - -* Compatible with Delphi 2010 -* Compatible with PHP 5.2.11 -* Compatible with PHP 5.3.0 (VC6 and VC9 editions : see PHP.INC for more details) - -7.1 Oct 2008 - -* Compatible with Delphi 2009 - -7.0 Apr 2007 - -* Compatible with Delphi 2007 -* Compatible with PHP 5.2.1 -* Compatible with PHP 4.4.6 -* Thread safe TpsvPHP component -* New component TPHPEngine introduced -* RunCode method reimplemented to solve "black horror" of pipes. -* Not fully compatible with previous version due to multithreading, but migration is easy. - -6.2 Feb 2006 - -* Compatible with PHP 5.2.0 -* Compatible with Delphi 2006 -* Compatible with PHP 5.1.1 -* Compatible with PHP 5.1.2 -* Code reorganized, some crap was removed -* Added headers support (Michael Maroszek) -* New demo projects -* PHP4Applications revisited - -6.1 - -* Compatible with PHP 5.0.4 -* Compatible with PHP 5.1.0b3 -* Compatible with Delphi 2005 - -6.0 - -* Translated Zend II API -* New PHP Object Model support -* PHP classes support for PHP4 and PHP5 -* New demo projects -* TPHPClass component compatible with PHP4 and PHP5 -* Added new property DLLFolder to psvPHP component -* New component PHPSystemLibrary - -5.5 fix 1 - -* New property RegisterGlobals (boolean) added to psvPHP component -* New property MaxExecutionTime (integer) added to psvPHP component - Maximum execution time of each script, in seconds -* New property MaxInputTime (integer) added to psvPHP component - Maximum amount of time each script may spend parsing request data -* New property SafeMode (boolean) added to psvPHP component -* New property SafeModeGid (boolean) added to psvPHP component - When safe_mode is on, UID/GID checks are bypassed when - including files from this directory and its subdirectories. (directory must also be in include_path or full path must - be used when including) -* Memory leak fixed in phpModules unit -* php_class demo project errors fixed -* psvPHP can load now PHP modules using dl() function - -5.5 - -* New component TPHPClass added (only for PHP 4) -* Added support of PHP 5 -* Improved speed of unloading of the PHP extensions under Apache -* Decreased size of the compiled modules (based on API only and developed using Visual FrameWork) -* ZendAPI unit is splitted to ZendAPI and ZendTypes units -* PHPAPI unit is splitted to PHPAPI and PHPTypes units -* New version of php4App - php4Applications subproject. - php4Applications allows to use php scripts in VB, C, C++, etc applications. - Demo projects for Delphi, VC and MS Word included. -* New property UseDelimiters added to TpsvPHP component. If UseDelimiters = true (by default) the - syntax of RunCode method parameter ACode should include standard script delimiters "" - to make RunCode and Execute method compatible. -* New parameters for OnScriptError event (error type, file name and line number) - -5.4 - -* Minor bugs fixed -* Documentation improved -* New property IniPath (folder where php.ini located) added to TpsvPHP component -* New functions translated in ZendAPI unit - -5.3 -* Added new public property ExecuteMethod to psvPHP component. - if ExecuteMethod is emGet, psvPHP receives variables as $_GET["variable"], - if ExecuteMethod is emServer (default), psvPHP receives variables as $variable. - Can be used to debug real PHP scripts with GET parameters. -* Added possibility to access published property of Delphi components from PHP -* Fixed problem with loading of PHP extension compiled wihout PHP4DELPHI_AUTOLOAD - option. - -5.2 -* Added dynamic attachement of all exported functions from php4ts.dll - in PHPAPI.pas -* New function for safe dynamic functions linking PHPStubInit and ZendStubInit - This functions can be used if you are planning to work with beta-version of PHP, - for example -* New unit zend_dynamic_array.pas -* New unit logos.pas - -5.0.3 -* Fixed bug when php function without parameters does not return value. -* New classes: TZendVariable and TZendValue in phpFunctions.pas -* New subproject: php4App - Using php4App you can integrate PHP not only with Delphi, but with VB, for example - -5.0.2 -* Fixed problem with assembler code in ZENDAPI.pas for Delphi 7 - -5.0.1 -* Fixed problem with number of parameters of zend_getparameters_ex function - -5.0 -* First version written in Delphi - - -1.0 - 4.0 -* php4Delphi was written in C as a DLL with simple Delphi wrapper - - -Before using php4Delphi library: - -If you have no PHP installed, you have to download and -install PHP separately. It is not included in the package. -You can download the latest version of PHP from -http://www.php.net/downloads.php - -ZEND API documentation available at http://www.zend.com -PHP API documentation available at http://www.php.net - -You need to ensure that the dlls which php uses can be found. -php4ts.dll is always used. If you are using any php extension dlls then you -will need those as well. -To make sure that the dlls can be found, you can either copy them to the -system directory (e.g. winnt/system32 or windows/system). - -Copy the file, php.ini-dist to your %WINDOWS% directory on -Windows 95/98 or to your %SYSTEMROOT% directory under Windows NT, -Windows 2000 or Windows XP and rename it to php.ini. Your %WINDOWS% or -%SYSTEMROOT% directory is typically: -c:\windows for Windows 95/98 -c:\winnt or c:\winnt40 for NT/2000/XP servers - -How to install php4Delphi library: - -Delphi 2007 & up: - -Uninstall previous installed version of php4Delphi Library from Delphi 2007 IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Uncomment (remove dot) from definition of suitable php, VC, Visual Library and architecture version -b) Uncomment (remove dot) from definition of prefered features in the feature block of the PHP.INC file -c) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -choose suitable Runtime package php4DelphiR(Your Delphi Version).dpk; In "Package..." window click "Compile" button to -compile packages. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD(Your Delphi Version).dpk -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. - - -Since this is a freeware you are strongly encouraged to look -at the source code and improve on the components if you want to. -Of course I would appreciate it if you would send me back the -changes and bug fixes you have made. - -For more information on the PHP Group and the PHP project, -please see . - - -PHP4Delphi forum -http://sourceforge.net/forum/forum.php?forum_id=324242 - -Authors: -Serhiy Perevoznyk -Belgium -serge_perevoznyk@hotmail.com -http://users.telenet.be/ws36637 -http://delphi32.blogspot.com - -Lew Zienin -Poland -levzenin@pm.me - -Nikita Ganzikov -Ukraine -pig-l@mail.ru - +# PHP4Delphi library + +PHP - Delphi interface and PHP extensions development framework + +{ $Id: readme.txt,v 7.4 07/2020 delphi32 Exp $ } + +PHP4Delphi is a Delphi interface to PHP for Delphi {2007, ..., Berlin} + +PHP4Delphi consists of 3 big subprojects: + +1. PHP scripting (using PHP as a scripting language in Delphi applications) +PHP4Delphi allows to execute the PHP scripts within the Delphi program using +TpsvPHP component directly without a WebServer. +It is a PHP extension that enables you to write client-side GUI applications. +One of the goals behind it was to prove that PHP is a capable general-purpose scripting +language that is suited for more than just Web applications. +It is used by "Delphi for PHP" from CodeGear. + +2. PHP extensions development framework (using Delphi to extend PHP functionality) +Visual Development Framework gives possibility to create custom PHP +Extensions using Delphi. +PHP extension, in the most basic of terms, is a set of instructions that is +designed to add functionality to PHP. + +3. PHP4Applications (integrate PHP in any application) +Supports C, C++, Visual Basic, VBA, C#, Delphi, Delphi .NET, Visual Basic .NET etc. + + +More detail information available in php4Delphi manual php4Delphi.pdf + + +This is a source-only release of php4Delphi. It includes +design-time and run-time packages for Delphi 2007 through Delphi Berlin + + + +# History + +7.4 Mar 2019 + +* Compatible with PHP 5.5.0 +* Compatible with PHP 5.6.0 +* Compatible with PHP 5.6.x +* Compatible with Delphi 2011, XE8, Seattle, Berlin +* Added unicode support + +7.3 Jan 2019 + +* Compatible with PHP 5.4.0 + +7.2 Oct 2009 + +* Compatible with Delphi 2010 +* Compatible with PHP 5.2.11 +* Compatible with PHP 5.3.0 (VC6 and VC9 editions : see PHP.INC for more details) + +7.1 Oct 2008 + +* Compatible with Delphi 2009 + +7.0 Apr 2007 + +* Compatible with Delphi 2007 +* Compatible with PHP 5.2.1 +* Compatible with PHP 4.4.6 +* Thread safe TpsvPHP component +* New component TPHPEngine introduced +* RunCode method reimplemented to solve "black horror" of pipes. +* Not fully compatible with previous version due to multithreading, but migration is easy. + +6.2 Feb 2006 + +* Compatible with PHP 5.2.0 +* Compatible with Delphi 2006 +* Compatible with PHP 5.1.1 +* Compatible with PHP 5.1.2 +* Code reorganized, some crap was removed +* Added headers support (Michael Maroszek) +* New demo projects +* PHP4Applications revisited + +6.1 + +* Compatible with PHP 5.0.4 +* Compatible with PHP 5.1.0b3 +* Compatible with Delphi 2005 + +6.0 + +* Translated Zend II API +* New PHP Object Model support +* PHP classes support for PHP4 and PHP5 +* New demo projects +* TPHPClass component compatible with PHP4 and PHP5 +* Added new property DLLFolder to psvPHP component +* New component PHPSystemLibrary + +5.5 fix 1 + +* New property RegisterGlobals (boolean) added to psvPHP component +* New property MaxExecutionTime (integer) added to psvPHP component - Maximum execution time of each script, in seconds +* New property MaxInputTime (integer) added to psvPHP component - Maximum amount of time each script may spend parsing request data +* New property SafeMode (boolean) added to psvPHP component +* New property SafeModeGid (boolean) added to psvPHP component - When safe_mode is on, UID/GID checks are bypassed when + including files from this directory and its subdirectories. (directory must also be in include_path or full path must + be used when including) +* Memory leak fixed in phpModules unit +* php_class demo project errors fixed +* psvPHP can load now PHP modules using dl() function + +5.5 + +* New component TPHPClass added (only for PHP 4) +* Added support of PHP 5 +* Improved speed of unloading of the PHP extensions under Apache +* Decreased size of the compiled modules (based on API only and developed using Visual FrameWork) +* ZendAPI unit is splitted to ZendAPI and ZendTypes units +* PHPAPI unit is splitted to PHPAPI and PHPTypes units +* New version of php4App - php4Applications subproject. + php4Applications allows to use php scripts in VB, C, C++, etc applications. + Demo projects for Delphi, VC and MS Word included. +* New property UseDelimiters added to TpsvPHP component. If UseDelimiters = true (by default) the + syntax of RunCode method parameter ACode should include standard script delimiters "" + to make RunCode and Execute method compatible. +* New parameters for OnScriptError event (error type, file name and line number) + +5.4 + +* Minor bugs fixed +* Documentation improved +* New property IniPath (folder where php.ini located) added to TpsvPHP component +* New functions translated in ZendAPI unit + +5.3 +* Added new public property ExecuteMethod to psvPHP component. + if ExecuteMethod is emGet, psvPHP receives variables as $_GET["variable"], + if ExecuteMethod is emServer (default), psvPHP receives variables as $variable. + Can be used to debug real PHP scripts with GET parameters. +* Added possibility to access published property of Delphi components from PHP +* Fixed problem with loading of PHP extension compiled wihout PHP4DELPHI_AUTOLOAD + option. + +5.2 +* Added dynamic attachement of all exported functions from php4ts.dll + in PHPAPI.pas +* New function for safe dynamic functions linking PHPStubInit and ZendStubInit + This functions can be used if you are planning to work with beta-version of PHP, + for example +* New unit zend_dynamic_array.pas +* New unit logos.pas + +5.0.3 +* Fixed bug when php function without parameters does not return value. +* New classes: TZendVariable and TZendValue in phpFunctions.pas +* New subproject: php4App + Using php4App you can integrate PHP not only with Delphi, but with VB, for example + +5.0.2 +* Fixed problem with assembler code in ZENDAPI.pas for Delphi 7 + +5.0.1 +* Fixed problem with number of parameters of zend_getparameters_ex function + +5.0 +* First version written in Delphi + + +1.0 - 4.0 +* php4Delphi was written in C as a DLL with simple Delphi wrapper + +# Prerequisites +Before using php4Delphi library: + +If you have no PHP installed, you have to download and +install PHP separately. It is not included in the package. +You can download the latest version of PHP from +http://www.php.net/downloads.php + +ZEND API documentation available at http://www.zend.com +PHP API documentation available at http://www.php.net + +You need to ensure that the dlls which php uses can be found. +php4ts.dll is always used. If you are using any php extension dlls then you +will need those as well. +To make sure that the dlls can be found, you can either copy them to the +system directory (e.g. winnt/system32 or windows/system). + +Copy the file, php.ini-dist to your %WINDOWS% directory on +Windows 95/98 or to your %SYSTEMROOT% directory under Windows NT, +Windows 2000 or Windows XP and rename it to php.ini. Your %WINDOWS% or +%SYSTEMROOT% directory is typically: +c:\windows for Windows 95/98 +c:\winnt or c:\winnt40 for NT/2000/XP servers + +# Building +Uninstall previous installed version of php4Delphi Library from Delphi IDE. +Remove previously compiled php4Delphi packages from your hard disk. + +Select PHP version you are going to use. php4Delphi supports PHP 5.x, +but not at the same time. You have to compile php4Delphi for selected target version of PHP. + +Open PHP.INC file. +If you are using PHP5: +a) Uncomment (remove dot) from definition of suitable php, VC and widgetset version +b) Uncomment (remove dot) from definition of prefered features in the feature block of the PHP.INC file +c) Save PHP.INC file + +Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime +choose suitable Runtime package php4DelphiR(Your Delphi Version).dpk; In "Package..." window click "Compile" button to +compile packages. +Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS +"PATH" environment variable; +for example, in the Windows\System directory). + +After compiling php4Delphi run-time package you must install design-time +package into the IDE. + +Use "File\Open..." menu item to open design-time package php4DelphiD(Your Delphi Version).dpk +In "Package..." window click "Compile" button to compile the package +and then click "Install" button to register php4Delphi Library +components on the component palette. + +# Credits + +Since this is a freeware you are strongly encouraged to look +at the source code and improve on the components if you want to. +Of course I would appreciate it if you would send me back the +changes and bug fixes you have made. + +For more information on the PHP Group and the PHP project, +please see . + + +PHP4Delphi forum +http://sourceforge.net/forum/forum.php?forum_id=324242 + +Authors: +Serhiy Perevoznyk +Belgium +serge_perevoznyk@hotmail.com +http://users.telenet.be/ws36637 +http://delphi32.blogspot.com + +Lew Zienin +Poland +levzenin@pm.me + +Nikita Ganzikov +Ukraine +pig-l@mail.ru + From d2be1db4239bba4b4aafe771d8a95d8ea63209cf Mon Sep 17 00:00:00 2001 From: lion Date: Sun, 19 Jul 2020 00:46:46 +0300 Subject: [PATCH 31/35] added: Delphi 10.3 Rio support --- Source/ConverterBackup/php4DelphiR2010.dproj | 122 ++ .../php4DelphiR2010.dproj.2007 | 120 ++ Source/DelphiFunctions.pas | 1 + .../php4Applications/Delphi/Project1.dpr | 4 +- .../php4Applications/Delphi/Unit1.pas | 3 +- Source/Demos/psvPHP/console/phpcon.dpr | 13 +- Source/Demos/psvPHP/console/phpcon.dproj | 1085 ++++++++--------- Source/Demos/psvPHP/console/test.php | 11 +- Source/PHP.INC | 8 +- Source/PHPAPI.pas | 8 +- Source/PHPTypes.pas | 2 + Source/ZENDAPI.pas | 32 +- Source/ZendTypes.pas | 64 +- .../php4delphi Delphi 10.3 Rio.groupproj | 48 + Source/php4App.dll | Bin 2192384 -> 0 bytes Source/php4AppIntf.pas | Bin 1952 -> 3988 bytes Source/php4DelphiDRio.dpk | 48 + Source/php4DelphiDRio.dproj | 799 ++++++++++++ Source/php4DelphiRRio.dpk | 50 + Source/php4DelphiRRio.dproj | 806 ++++++++++++ Source/php4delphi.pas | 13 +- Source/phpModules.pas | 48 +- 22 files changed, 2640 insertions(+), 645 deletions(-) create mode 100644 Source/ConverterBackup/php4DelphiR2010.dproj create mode 100644 Source/ConverterBackup/php4DelphiR2010.dproj.2007 create mode 100644 Source/packages/php4delphi Delphi 10.3 Rio.groupproj delete mode 100644 Source/php4App.dll create mode 100644 Source/php4DelphiDRio.dpk create mode 100644 Source/php4DelphiDRio.dproj create mode 100644 Source/php4DelphiRRio.dpk create mode 100644 Source/php4DelphiRRio.dproj diff --git a/Source/ConverterBackup/php4DelphiR2010.dproj b/Source/ConverterBackup/php4DelphiR2010.dproj new file mode 100644 index 0000000..113eeaf --- /dev/null +++ b/Source/ConverterBackup/php4DelphiR2010.dproj @@ -0,0 +1,122 @@ + + + {DB360964-FCA5-4943-AD27-13C4B2BC0549} + php4DelphiR2010.dpk + Debug + DCC32 + 12.0 + + + true + + + true + Base + true + + + true + Base + true + + + ..\..\..\..\..\..\Public\Documents\RAD Studio\6.0\Bpl\php4DelphiR2010.bpl + 00400000 + true + x86 + php4Delphi (run-rime) + true + false + false + true + true + false + false + false + + + false + RELEASE;$(DCC_Define) + 0 + false + + + DEBUG;$(DCC_Define) + + + + MainSource + + + + + + + + + + + + + + + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + Package + + + + php4DelphiR2010.dpk + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + 12 + + diff --git a/Source/ConverterBackup/php4DelphiR2010.dproj.2007 b/Source/ConverterBackup/php4DelphiR2010.dproj.2007 new file mode 100644 index 0000000..3d746af --- /dev/null +++ b/Source/ConverterBackup/php4DelphiR2010.dproj.2007 @@ -0,0 +1,120 @@ + + + {DB360964-FCA5-4943-AD27-13C4B2BC0549} + php4DelphiR2010.dpk + Debug + DCC32 + + + true + + + true + Base + true + + + true + Base + true + + + ..\..\..\..\..\..\Public\Documents\RAD Studio\6.0\Bpl\php4DelphiR2010.bpl + 00400000 + true + x86 + php4Delphi (run-rime) + true + false + false + true + true + false + false + false + + + false + RELEASE;$(DCC_Define) + 0 + false + + + DEBUG;$(DCC_Define) + + + + MainSource + + + + + + + + + + + + + + + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + Package + + + + php4DelphiR2010.dpk + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + 12 + + diff --git a/Source/DelphiFunctions.pas b/Source/DelphiFunctions.pas index 11163b2..23892b4 100644 --- a/Source/DelphiFunctions.pas +++ b/Source/DelphiFunctions.pas @@ -16,6 +16,7 @@ interface uses + Dialogs, SysUtils, Classes, ZendTypes, ZendAPI, PHPTypes, PHPAPI, typinfo; diff --git a/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Project1.dpr b/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Project1.dpr index dfa3f13..0114347 100644 --- a/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Project1.dpr +++ b/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Project1.dpr @@ -2,7 +2,9 @@ program Project1; uses Forms, - Unit1 in 'Unit1.pas' {Form1}; + Unit1 in 'Unit1.pas' {Form1}, + php4AppIntf in '..\..\..\php4AppIntf.pas', + ZendTypes in '..\..\..\ZendTypes.pas'; {$R *.RES} diff --git a/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Unit1.pas b/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Unit1.pas index 10d384c..b5d3415 100644 --- a/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Unit1.pas +++ b/Source/Demos Delphi 2009 (WideString support)/php4Applications/Delphi/Unit1.pas @@ -15,7 +15,8 @@ interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, PHP4AppIntf; + StdCtrls, + php4AppIntf; type TForm1 = class(TForm) diff --git a/Source/Demos/psvPHP/console/phpcon.dpr b/Source/Demos/psvPHP/console/phpcon.dpr index dd42a80..59005ac 100644 --- a/Source/Demos/psvPHP/console/phpcon.dpr +++ b/Source/Demos/psvPHP/console/phpcon.dpr @@ -15,7 +15,7 @@ program phpcon; uses SysUtils, - VCL.Dialogs, + Dialogs, php4delphi, zendAPI, ZENDTypes; @@ -23,6 +23,7 @@ uses var php : TpsvPHP; Engine : TPHPEngine; + ft : Byte = 0; procedure gui_message(ht: integer; return_value: pzval; return_value_ptr: pzval; this_ptr: pzval; return_value_used: integer; @@ -55,9 +56,13 @@ begin php := TpsvPHP.Create(nil); if ParamCount = 1 then begin - php.FileName := zend_ustr(ParamStr(1)); - write(php.Execute); - end + php.FileName := zend_ustr(ParamStr(1)); + if FileExists(ParamStr(1)) then + ft := 1; + end; + + if ft = 1 then + write(php.Execute) else begin writeLn(Format('Usage: %s ', [ParamStr(0)])); diff --git a/Source/Demos/psvPHP/console/phpcon.dproj b/Source/Demos/psvPHP/console/phpcon.dproj index caf51d6..3847e22 100644 --- a/Source/Demos/psvPHP/console/phpcon.dproj +++ b/Source/Demos/psvPHP/console/phpcon.dproj @@ -1,574 +1,511 @@ - - - {BDB76098-EDD6-4A5A-AF30-D7A6B0BCF914} - phpcon.dpr - True - Debug - 3 - Console - None - 18.2 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_1 - true - true - - - true - Cfg_1 - true - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - true - Cfg_2 - true - true - - - ..\..\..\;$(DCC_UnitSearchPath) - C:\elsewere - false - 1058 - false - 00400000 - System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) - $(BDS)\bin\delphi_PROJECTICON.ico - phpcon - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= - false - false - false - $(BDS)\bin\delphi_PROJECTICNS.icns - - - android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar - true - $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png - true - $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png - true - $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png - $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png - true - true - $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png - true - true - package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= - Debug - true - true - $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png - $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png - $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png - $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png - true - - - C:\elsewere\x32 - (None) - 1033 - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - Debug - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) - - - 1033 - C:\elsewere\x64 - Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) - (None) - Debug - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - - - 0 - false - 0 - RELEASE;$(DCC_Define) - - - 1033 - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName) - - - 1033 - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - - - true - DEBUG;$(DCC_Define) - false - - - info.php - - - info.php - 1033 - CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= - - - - MainSource - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - Delphi.Personality.12 - - - - - phpcon.dpr - - - Embarcadero C++Builder Office 2000 Servers Package - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - - - - False - True - True - - - - - true - - - - - true - - - - - true - - - - - true - - - - - phpcon.exe - true - - - - - - Contents\Resources - 1 - - - - - classes - 1 - - - - - Contents\MacOS - 0 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-xxhdpi - 1 - - - - - library\lib\mips - 1 - - - - - 1 - - - 1 - - - 0 - - - 1 - - - 1 - - - library\lib\armeabi-v7a - 1 - - - 1 - - - - - 0 - - - 1 - .framework - - - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF - 1 - - - - - 1 - - - 1 - - - 1 - - - - - - library\lib\armeabi - 1 - - - - - 0 - - - 1 - - - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\drawable-normal - 1 - - - - - res\drawable-xhdpi - 1 - - - - - res\drawable-large - 1 - - - - - 1 - - - 1 - - - 1 - - - - - Assets - 1 - - - Assets - 1 - - - - - - res\drawable-hdpi - 1 - - - - - library\lib\armeabi-v7a - 1 - - - - - - - Assets - 1 - - - Assets - 1 - - - - - 1 - - - 1 - - - 1 - - - - - res\values - 1 - - - - - res\drawable-small - 1 - - - - - res\drawable - 1 - - - - - 1 - - - 1 - - - 1 - - - - - 1 - - - - - res\drawable - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - library\lib\armeabi-v7a - 1 - - - - - 0 - .bpl - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - 1 - .dylib - - - - - res\drawable-mdpi - 1 - - - - - res\drawable-xlarge - 1 - - - - - res\drawable-ldpi - 1 - - - - - 0 - .dll;.bpl - - - 1 - .dylib - - - - - - - - - - - - - 12 - - - - - + + + {BDB76098-EDD6-4A5A-AF30-D7A6B0BCF914} + phpcon.dpr + True + Debug + 3 + Console + None + 18.2 + Win32 + DCC32 + + + true + + + true + Base + true + + + true + Base + true + + + phpcon.exe + ..\..\..\;$(DCC_UnitSearchPath) + + false + 1058 + false + 00400000 + System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + phpcon + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + false + false + false + $(BDS)\bin\delphi_PROJECTICNS.icns + + + 0 + false + 0 + RELEASE;$(DCC_Define) + + + true + DEBUG;$(DCC_Define) + false + + + + MainSource + + + Base + + + Cfg_2 + Base + + + Cfg_1 + Base + + + + + Delphi.Personality.12 + + + + + phpcon.dpr + + + Embarcadero C++Builder Office 2000 Servers Package + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + False + True + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1058 + 1251 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + False + True + True + + + + + true + + + + + true + + + + + true + + + + + true + + + + + phpcon.exe + true + + + + + + Contents\Resources + 1 + + + + + classes + 1 + + + + + Contents\MacOS + 0 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + library\lib\mips + 1 + + + + + 1 + + + 1 + + + 0 + + + 1 + + + 1 + + + library\lib\armeabi-v7a + 1 + + + 1 + + + + + 0 + + + 1 + .framework + + + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + 1 + + + 1 + + + 1 + + + + + + library\lib\armeabi + 1 + + + + + 0 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\drawable-normal + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-large + 1 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + res\drawable-hdpi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + + + Assets + 1 + + + Assets + 1 + + + + + 1 + + + 1 + + + 1 + + + + + res\values + 1 + + + + + res\drawable-small + 1 + + + + + res\drawable + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + + + res\drawable + 1 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 0 + .bpl + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\drawable-ldpi + 1 + + + + + 0 + .dll;.bpl + + + 1 + .dylib + + + + + + + + + + + + + 12 + + diff --git a/Source/Demos/psvPHP/console/test.php b/Source/Demos/psvPHP/console/test.php index f4f3614..97d44b7 100644 --- a/Source/Demos/psvPHP/console/test.php +++ b/Source/Demos/psvPHP/console/test.php @@ -1,4 +1,7 @@ - - + \ No newline at end of file diff --git a/Source/PHP.INC b/Source/PHP.INC index d7fa89c..6b8aca2 100644 --- a/Source/PHP.INC +++ b/Source/PHP.INC @@ -34,8 +34,11 @@ Define suitable visual library } //Version +//{$DEFINE PHP520} {$DEFINE PHP560} //PHP Version +{$DEFINE COMPILER_VC6} + //Compiler Version {$DEFINE ZTS} //Thread Safe mode (php7ts, e.g) {$DEFINE VCL} @@ -96,7 +99,6 @@ Define suitable visual library {$IFDEF PHP510} {$DEFINE PHP504} {$ENDIF} {$IFDEF PHP504} {$DEFINE PHP5} {$ENDIF} {$IFDEF PHP_COMPILER_ID} - {$DEFINE COMPILER_VC9} {$IFNDEF PHP7} {$IFDEF PHP550} {$DEFINE COMPILER_VC11} {$ENDIF} {$ELSE} @@ -120,6 +122,10 @@ Define suitable visual library {$DEFINE VERSION12} {$DEFINE VERSION13} {$DEFINE VERSION14} +{$else} + {$if CompilerVersion > 25} + {$LEGACYIFEND ON} + {$ifend} {$endif} {$IFNDEF VER80} {Delphi 1.0} diff --git a/Source/PHPAPI.pas b/Source/PHPAPI.pas index d26fec7..fefeccc 100644 --- a/Source/PHPAPI.pas +++ b/Source/PHPAPI.pas @@ -119,7 +119,7 @@ interface php_get_output_start_filename: function (TSRMLS_D : pointer) : zend_pchar; cdecl; php_get_output_start_lineno: function (TSRMLS_D : pointer) : integer; cdecl; php_ob_handler_used: function (handler_name : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; - {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} + {$IF not defined(PHP520) and not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} php_ob_init_conflict: function (handler_new : zend_pchar; handler_set : zend_pchar; TSRMLS_DC : pointer) : integer; cdecl; {$ifend} {$endif} @@ -268,7 +268,7 @@ function ValueToFloat(Value : zend_ustr) : extended; php_info_print_table_row : procedure (n2 : integer; c1, c2 : zend_pchar); cdecl; php_info_print_table_end: procedure (); cdecl; -{$IF Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} +{$IF defined(PHP520) Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} php_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; {$ELSE} php_body_write: function (const str : zend_pchar; str_length: uint; TSRMLS_DC : pointer) : integer; cdecl; @@ -528,7 +528,7 @@ function LoadPHP(const LibraryPath: zend_ustr = PHPlp) : boolean; LFunc(@php_ob_handler_used, 'php_ob_handler_used'); {$ENDIF} - {$IF not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} + {$IF not defined(PHP520) and not Defined(PHP540) and not Defined(PHP550) and not Defined(PHP560)} LFunc(@php_ob_init_conflict, 'php_ob_init_conflict'); {$ifend} LFunc(@php_strtoupper, 'php_strtoupper'); @@ -580,7 +580,7 @@ function LoadPHP(const LibraryPath: zend_ustr = PHPlp) : boolean; LFunc(@php_info_print_table_row, 'php_info_print_table_row'); LFunc(@php_info_print_table_end, 'php_info_print_table_end'); - {$IF Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} + {$IF Defined(PHP520) or Defined(PHP540) or Defined(PHP550) or Defined(PHP560)} LFunc(@php_write, 'php_write' ); {$ELSE} LFunc(@php_body_write, 'php_body_write' ); diff --git a/Source/PHPTypes.pas b/Source/PHPTypes.pas index 6516dbe..bbca1da 100644 --- a/Source/PHPTypes.pas +++ b/Source/PHPTypes.pas @@ -308,7 +308,9 @@ interface phpinfo_as_text : integer; + {$IFDEF PHP520} ini_entries : zend_pchar; + {$ENDIF} additional_functions: Pointer; input_filter_init : Pointer; diff --git a/Source/ZENDAPI.pas b/Source/ZENDAPI.pas index 62d0a6c..fbed93f 100644 --- a/Source/ZENDAPI.pas +++ b/Source/ZENDAPI.pas @@ -25,13 +25,17 @@ interface {$endif} {$IFDEF FPC} LCLType,LCLIntf,dynlibs,libc{$ELSE}Windows{$ENDIF}, SysUtils, ZendTypes, Variants, - PHPTypes; + PHPTypes + {$if defined(chameleon)} + ,zend_chameleon + {$ifend}; type TArrayVariant = array of variant; TWSDate = array of string; PWSDate = ^TWSDate; TASDate = array of AnsiString; PASDate = ^TWSDate; +{$if not defined(chameleon_load_firstmatch)} const PHPlp = {$IFDEF PHP7} @@ -40,7 +44,7 @@ interface {$IFDEF PHP5} 'php5' {$ELSE} - 'php4' + 'php' {$ENDIF} {$ENDIF} {$IFDEF ZTS} + 'ts' {$ENDIF} @@ -50,6 +54,7 @@ interface {$ELSE} + '.so' {$ENDIF}; +{$ifend} type EPHP4DelphiException = class(Exception) @@ -286,7 +291,7 @@ procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} var zend_get_constant : function(name: zend_pchar; name_len: uint; var result: zval; TSRMLS_DC: Pointer): integer; cdecl; - + {$if defined(PHP530)} zend_register_null_constant : procedure(name: zend_pchar; name_len: uint; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; @@ -295,7 +300,7 @@ procedure zend_hash_internal_pointer_reset(ht: {$IFDEF PHP7} Pzend_array {$ELSE} zend_register_long_constant : procedure(name: zend_pchar; name_len: uint; lval: Longint; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; - + {$ifend} zend_register_double_constant : procedure(name: zend_pchar; name_len: uint; dval: Double; flags: integer; module_number: integer; TSRMLS_DC: Pointer); cdecl; @@ -755,7 +760,7 @@ procedure ZVAL_STRINGLW(z: pzval; s: PWideChar; l: integer; duplicate: boolean); procedure INIT_CLASS_ENTRY(var class_container: Tzend_class_entry; class_name: zend_pchar; functions: {$IFDEF PHP7}HashTable{$ELSE}pointer{$ENDIF}); procedure zend_copy_constant(c: zend_constant); -{$IF defined(PHP540) or defined(PHP550) or defined(PHP560)} +{$IF defined(PHP520) or defined(PHP540) or defined(PHP550) or defined(PHP560)} procedure zend_copy_constants(target: PHashTable; source: PHashTable); cdecl; procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; {$IFEND} @@ -768,7 +773,7 @@ procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; zend_output_debug_string : procedure(trigger_break: boolean; Msg: zend_pchar); cdecl; {$IFDEF PHP5} - {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + {$IF not defined(PHP520) and not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_copy_constants: procedure(target: PHashTable; source: PHashTable); cdecl; {$IFEND} zend_objects_new : function (_object : pointer; class_type : pointer; TSRMLS_DC : pointer) : {$IFDEF PHP7}zend_object{$ELSE}_zend_object_value{$ENDIF}; cdecl; @@ -777,7 +782,7 @@ procedure zend_class_add_ref(aclass: Ppzend_class_entry); cdecl; zend_objects_store_del_ref: procedure (_object : pzval; TSRMLS_DC : pointer); cdecl; function_add_ref: procedure (func: {$IFDEF PHP7}Pzend_function{$ELSE}PZendFunction{$ENDIF}); cdecl; - {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + {$IF not defined(PHP520) and not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} zend_class_add_ref: procedure(aclass: Ppzend_class_entry); cdecl; {$IFEND} @@ -1910,11 +1915,11 @@ procedure ZVAL_ARRAY(z: pzval; arr: array of variant); overload; Exit; end; -{$ifdef VERSION14} +{$if CompilerVersion > 21} procedure ZVAL_ARRAY(z: pzval; arr: System.TArray); overload; {$else} procedure ZVAL_ARRAY(z: pzval; arr: array of integer); overload; -{$endif} +{$ifend} var i: integer; begin @@ -2238,7 +2243,7 @@ procedure zend_copy_constant(c: zend_constant); if (c.flags and CONST_PERSISTENT) = 0 then _zval_copy_ctor_func(@c.value, '', 0); end; -{$IF defined(PHP540) or defined(PHP550) or defined(PHP560)} +{$if defined(PHP520) or defined(PHP540) or defined(PHP550) or defined(PHP560)} procedure zend_copy_constants(target: PHashTable;source: PHashTable); var tmp: zend_constant; @@ -2274,13 +2279,13 @@ function LoadZEND(const LibraryPath: zend_ustr = PHPlp) : boolean; {$ENDIF} {$IFDEF PHP5} - {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + {$IF not defined(PHP520) and not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} LFunc(@zend_copy_constants, 'zend_copy_constants'); {$IFEND} LFunc(@zend_objects_new, 'zend_objects_new'); LFunc(@zend_objects_clone_obj, 'zend_objects_clone_obj'); LFunc(@function_add_ref, 'function_add_ref'); - {$IF not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} + {$IF not defined(PHP520) and not defined(PHP540) and not defined(PHP550) and not defined(PHP560)} LFunc(@zend_class_add_ref, 'zend_class_add_ref'); {$IFEND} @@ -2515,6 +2520,7 @@ function LoadZEND(const LibraryPath: zend_ustr = PHPlp) : boolean; LFunc(@zend_get_constant, 'zend_get_constant'); // -- zend_register_null_constant + {$if defined(PHP530)} LFunc(@zend_register_null_constant, 'zend_register_null_constant'); // -- zend_register_bool_constant @@ -2522,7 +2528,7 @@ function LoadZEND(const LibraryPath: zend_ustr = PHPlp) : boolean; // -- zend_register_long_constant LFunc(@zend_register_long_constant, 'zend_register_long_constant'); - + {$ifend} // -- zend_register_double_constant LFunc(@zend_register_double_constant, 'zend_register_double_constant'); diff --git a/Source/ZendTypes.pas b/Source/ZendTypes.pas index 63588f9..d0d768b 100644 --- a/Source/ZendTypes.pas +++ b/Source/ZendTypes.pas @@ -35,43 +35,23 @@ interface const ZEND_BUILD_DEBUG = ''; {$ENDIF} -{$IFDEF PHP_COMPILER_ID} -{$IFDEF COMPILER_VC9} const ZEND_BUILD_SYSTEM = -{$IFDEF COMPILER_VC14} -',VC14' -{$ELSE} - {$IFDEF COMPILER_VC13} - ',VC13' - {$ELSE} - {$IFDEF COMPILER_VC12} - ',VC12' - {$ELSE} - {$IFDEF COMPILER_VC11} - ',VC11' - {$ELSE} - {$IFDEF COMPILER_VC11} - ',VC10' - {$ELSE} - ',VC9' - {$ENDIF} - {$ENDIF} - {$ENDIF} - {$ENDIF} -{$ENDIF}; -{$ELSE} -{$IFDEF COMPILER_VC6} -const ZEND_BUILD_SYSTEM = ',VC6'; -{$ELSE} -const ZEND_BUILD_SYSTEM = ', $DEFINE COMPILER_VCx directive error. See PHP.INC for more details'; -{$ENDIF} -{$ENDIF} -{$ENDIF} - +{$IFDEF PHP_COMPILER_ID} +{$if defined(COMPILER_VC14)}',VC14' +{$elseif COMPILER_VC13} ',VC13' +{$elseif COMPILER_VC12} ',VC12' +{$elseif COMPILER_VC11} ',VC11' +{$elseif COMPILER_VC10} ',VC10' +{$elseif COMPILER_VC9} ',VC9' +{$elseif COMPILER_VC6} ',VC6' +{$else}', $DEFINE COMPILER_VCx directive error. See PHP.INC for more details' +{$ifend} +{$else} +', $DEFINE COMPILER_VCx directive error. See PHP.INC for more details' +{$endif}; {$ENDIF} - //zend_vm_opcodes.h const ZEND_NOP = 0; @@ -853,10 +833,14 @@ Tzend_class_entry = record get_iterator : pointer; interface_gets_implemented : pointer; + {$IFDEF PHP530} get_static_method : pointer; + {$ENDIF} + {$IFDEF PHP511} serialize : pointer; unserialize : pointer; + {$ENDIF} interfaces : pointer; num_interfaces : zend_uint; @@ -867,7 +851,9 @@ Tzend_class_entry = record doc_comment : zend_pchar; doc_comment_len : zend_uint; + {$IFDEF PHP511} module : pointer; + {$ENDIF} end; {$ENDIF} @@ -1192,10 +1178,14 @@ _zend_module_entry = record request_shutdown_func : pointer; info_func : pointer; version : zend_pchar; - globals_size : size_t; - globals_id_ptr : pointer; - globals_ctor : pointer; - globals_dtor : pointer; + + {$IFDEF PHP520} + globals_size : size_t; + globals_id_ptr : pointer; + globals_ctor : pointer; + globals_dtor : pointer; + {$ENDIF} + post_deactivate_func : pointer; module_started : integer; _type : byte; diff --git a/Source/packages/php4delphi Delphi 10.3 Rio.groupproj b/Source/packages/php4delphi Delphi 10.3 Rio.groupproj new file mode 100644 index 0000000..ba7a357 --- /dev/null +++ b/Source/packages/php4delphi Delphi 10.3 Rio.groupproj @@ -0,0 +1,48 @@ + + + {D3946CCE-C89C-4195-8C9B-ACC8FEE61B03} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/php4App.dll b/Source/php4App.dll deleted file mode 100644 index d25d474ea40f00cf2577bcd09b2c3e842a603502..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2192384 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

!^QH5jjb`P1@(GE{kO=oGlBL# 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 z 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 z�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¨*4(GG$?IBdCt~#-a)1xQ@d!TyHz!^v;-1ng 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

WEvaH(keHu3;$F6K5VKyKClRJmnDZ~Cp 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

109?q0UzehLd)t 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�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%0D$-txd(;V7sT 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 z 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%0D|q*J|NQXi;V(>D$1QpvEb9-Go5A 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�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 ?Ncb7#UEBvJ|Kl)v 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 diff --git a/Source/php4AppIntf.pas b/Source/php4AppIntf.pas index ef7a95215d094d8fd8e47cab2d0b5be4d597ed01..ea6d31f10aa73154900b6d21357c6ce357c86eb7 100644 GIT binary patch literal 3988 zcmc&$%Wl&^6g_Js{=qwF7ww`5q_U}@JSrhnk%$Ew6zrsla2yjSr4RAzz&SH=T;ehI zxNfVFy+dSmig)P7F>&9NSqGA0Y_&6J>vJUnj&v zIbC2W@=NLo%wBA|Q^E*XRvGserlw<_S3U+f=0A$gzgnMetxqWDLfY}d62=+1inn-v zW)?2F9x*SJC2dhx#1!vB~?0SuV|1PAG}-SG{Dt9j-{c!3EJG>XaR} zEBbJMOPghHvjsa&uh+%5nd@stJ0`LZ+YrU6|M}0A9X>qYk(JHuoPJF>AM&3IzJ0j9 z;@Js@va6o0cv;C0luVsIzP;zIMfZ{84`sEhpA1-S=k)53nO5YvPXxowsW#Q&pJCha z7_b)AJN!7d;nsge+>Em?Z@+xD_t%{FlKPaotiB4%FJ0~HsdgOqEu}cwYF1^YrXvS< zvbjS?oMrqzh>4f*f8YD6KmAR2R5zrmpImpy-RLg5cVF7;J9WPZ+m+f)d)pr6*4~_> g)yM{LcmASc-AGNfP{pan!POtSp{cg*_tYN#0xVBm&Hw-a literal 1952 zcmbtU%Wm5+5WMp%_Le3G`H&(7tV`9p4+BME#6}Li1dOz@h|(m>M;bfGzn4rCQI@G% zNp%rK%?yXTv%Eih-Sa^1;qX~}UA!%n;;f{WNns8V0BL3l*z4BGo2m`l_R+rk1h-pZZW{_J7WpMhymukl*7#P^M~8_IZA z%1xRTRs*xKR!t`p=M_w5k)uGH-QeW6Ils6#e>Xt(%-03s?12y`m<83S(EGWtbxugz z8sd!@_<^EYZ55iF)J~Kk8~}4qyTo4(jfLrBGuNndFt#cw=Q&YYmRLEBFp~nGkZ+#e z^I7DaCP|mLX2u8PifTr0IHs666yNCvz0}S-yjEpHy@TS4a<{+O-6Edg(;b%1qEB90 z{4?Wtpnn>TcYGg+ew5XaOps+X$ al + + {34B23B2E-657F-42AF-9898-5D22792F862D} + php4DelphiDRio.dpk + True + Debug + 1 + Package + VCL + 18.7 + Win32 + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 1 + php4Delphi (design-time) + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + php4DelphiDRio + true + 1049 + false + true + true + false + false + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + 00400000 + false + false + true + + + vcl;rtl;vclactnband;vclx;php4DelphiR2010;$(DCC_UsePackage) + php4DelphiD2010_Icon.ico + 1033 + true + CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 0 + false + RELEASE;$(DCC_Define) + 0 + + + true + false + DEBUG;$(DCC_Define) + + + true + 1033 + CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) + php4delphi;F:\переустановил\Рабочий стол 08.07.4016\soulengine-5554e3db061d08b94f439be26ed071a74c30071c;$(DCC_UnitSearchPath) + + + + MainSource + + + + + + + + + + + + +

dlgAbout + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + Delphi.Personality.12 + Package + + + + php4DelphiDRio.dpk + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + File C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\18.0\bpl\dcllmdlegacy240.bpl not found + + + + True + + + + + 1 + + + 0 + + + + + classes + 1 + + + + + res\xml + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\armeabi + 1 + + + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + + + res\values + 1 + + + + + res\values-v21 + 1 + + + + + res\values + 1 + + + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + + + 1 + + + 1 + + + 0 + + + + + 1 + .framework + + + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + + + + 1 + + + 1 + + + 1 + + + + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 0 + + + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + + + + + + + + + 12 + + + + + diff --git a/Source/php4DelphiRRio.dpk b/Source/php4DelphiRRio.dpk new file mode 100644 index 0000000..74a511b --- /dev/null +++ b/Source/php4DelphiRRio.dpk @@ -0,0 +1,50 @@ +package php4DelphiRRio; + +{$R *.res} +{$R 'php4delphi.dcr'} +{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DEFINE DEBUG} +{$ENDIF IMPLICITBUILDING} +{$DESCRIPTION 'php4Delphi (run-rime)'} +{$RUNONLY} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl; + +contains + ZENDAPI in 'ZENDAPI.pas', + DelphiFunctions in 'DelphiFunctions.pas', + php4delphi in 'php4delphi.pas', + PHPAPI in 'PHPAPI.pas', + phpModules in 'phpModules.pas', + PHPLibrary in 'PHPLibrary.pas', + PHPFunctions in 'PHPFunctions.pas', + PHPTypes in 'PHPTypes.pas', + ZENDTypes in 'ZENDTypes.pas', + phpClass in 'phpClass.pas', + PHPCommon in 'PHPCommon.pas'; + +end. diff --git a/Source/php4DelphiRRio.dproj b/Source/php4DelphiRRio.dproj new file mode 100644 index 0000000..b61998b --- /dev/null +++ b/Source/php4DelphiRRio.dproj @@ -0,0 +1,806 @@ + + + {E17417E2-2EC1-4971-BB34-C9C25AFF27A5} + php4DelphiRRio.dpk + True + Debug + 1 + Package + VCL + 18.7 + Win32 + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + 1 + php4Delphi (run-rime) + Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + php4DelphiRRio + true + 1049 + false + true + true + true + false + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName= + 00400000 + false + false + false + + + php4DelphiR2010_Icon.ico + 1033 + true + CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + + + 0 + false + RELEASE;$(DCC_Define) + 0 + + + true + false + DEBUG;$(DCC_Define) + + + true + 1033 + CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName) + php4delphi;$(DCC_UnitSearchPath) + + + + MainSource + + + + + + + + + + + + + + + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + Delphi.Personality.12 + Package + + + + php4DelphiRRio.dpk + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + File C:\USERS\PUBLIC\DOCUMENTS\EMBARCADERO\STUDIO\18.0\bpl\dcllmdlegacy240.bpl not found + + + + True + + + + + php4DelphiRRio.bpl + true + + + + + 1 + + + 0 + + + + + classes + 1 + + + + + res\xml + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\armeabi + 1 + + + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + + + res\values + 1 + + + + + res\values-v21 + 1 + + + + + res\values + 1 + + + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + + + 1 + + + 1 + + + 0 + + + + + 1 + .framework + + + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + + + + 1 + + + 1 + + + 1 + + + + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + 0 + + + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + + + + + + + + False + + 12 + + + + + diff --git a/Source/php4delphi.pas b/Source/php4delphi.pas index c999320..e3381b0 100644 --- a/Source/php4delphi.pas +++ b/Source/php4delphi.pas @@ -66,7 +66,7 @@ interface VCL.Dialogs, {$endif} {$ifend} - {$ENDIF} + {$ifend} PHPCommon, {$if CompilerVersion > 21} WinApi.WinSock, @@ -1705,13 +1705,22 @@ procedure TPHPEngine.PrepareEngine; FLibraryModule.request_shutdown_func := @rshutdown; FLibraryModule.request_startup_func := @rinit; + {$if defined(PHP5) and not defined(PHP520)} + FLibraryModule.global_id := 0; + {$ifend} FLibraryModule.module_started := 0; FLibraryModule._type := MODULE_PERSISTENT; FLibraryModule.Handle := nil; FLibraryModule.module_number := 0; - FLibraryModule.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); + {$ifdef PHP530} + {$ifndef COMPILER_VC9} + FLibraryModule.build_id := strdup(PAnsiChar(ZEND_MODULE_BUILD_ID)); + {$else} + FLibraryModule.build_id := DupStr(zend_pchar(ZEND_MODULE_BUILD_ID)); + {$endif} + {$endif} end; procedure TPHPEngine.RegisterConstants; diff --git a/Source/phpModules.pas b/Source/phpModules.pas index fdff4f1..43629c7 100644 --- a/Source/phpModules.pas +++ b/Source/phpModules.pas @@ -466,7 +466,15 @@ constructor TPHPExtension.Create(AOwner: TComponent); try if Assigned(OnCreate) and OldCreateOrder then OnCreate(Self); except - Forms.Application.HandleException(Self); + {$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms + {$elseif defined(FMX)} + FMX.Forms + {$elseif defined(KYLIX)} + QForms + {$elseif defined(VCL) or defined(LCL)} + Forms + {$ifend}.Application.HandleException(Self); end; end; end; @@ -477,9 +485,33 @@ constructor TPHPExtension.Create(AOwner: TComponent); procedure DoneVCLApplication; begin try - Forms.Application.OnException := nil; + {$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms + {$elseif defined(FMX)} + FMX.Forms + {$elseif defined(KYLIX)} + QForms + {$elseif defined(VCL) or defined(LCL)} + Forms + {$ifend}.Application.OnException := nil; {$IFDEF WINDOWS} - if Forms.Application.Handle <> 0 then ShowOwnedPopups(Forms.Application.Handle, False); + if {$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms + {$elseif defined(FMX)} + FMX.Forms + {$elseif defined(KYLIX)} + QForms + {$elseif defined(VCL) or defined(LCL)} + Forms + {$ifend}.Application.Handle <> 0 then ShowOwnedPopups({$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms + {$elseif defined(FMX)} + FMX.Forms + {$elseif defined(KYLIX)} + QForms + {$elseif defined(VCL) or defined(LCL)} + Forms + {$ifend}.Application.Handle, False); {$ELSE} Forms.Application.ShowHint := False; Forms.Application.Destroying; @@ -617,7 +649,15 @@ procedure TPHPApplication.OnExceptionHandler(Sender: TObject; procedure TPHPApplication.Run; begin - Forms.Application.OnException := OnExceptionHandler; + {$if defined(VCL) and (CompilerVersion > 21)} + VCL.Forms + {$elseif defined(FMX)} + FMX.Forms + {$elseif defined(KYLIX)} + QForms + {$elseif defined(VCL) or defined(LCL)} + Forms + {$ifend}.Application.OnException := OnExceptionHandler; end; From ded67100209d2a0c2332f8fe15e1728e5745ac9b Mon Sep 17 00:00:00 2001 From: lion Date: Sun, 19 Jul 2020 00:50:23 +0300 Subject: [PATCH 32/35] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 353fc1e..5821c1d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ PHP - Delphi interface and PHP extensions development framework { $Id: readme.txt,v 7.4 07/2020 delphi32 Exp $ } -PHP4Delphi is a Delphi interface to PHP for Delphi {2007, ..., Berlin} +PHP4Delphi is a Delphi interface to PHP for Delphi {2009, ..., Rio} PHP4Delphi consists of 3 big subprojects: @@ -30,11 +30,13 @@ More detail information available in php4Delphi manual php4Delphi.pdf This is a source-only release of php4Delphi. It includes -design-time and run-time packages for Delphi 2007 through Delphi Berlin +design-time and run-time packages for Delphi 2009 through Delphi Rio # History +7.5-rc1 2020 +* Compatible with Delphi 2009, 10.1 Seattle, 10.2 Berlin, 10.3 Tokyo 7.4 Mar 2019 From fd9e4a860555b4489d3e7fffbb169ee735f16f8f Mon Sep 17 00:00:00 2001 From: lion Date: Mon, 20 Jul 2020 02:25:48 +0300 Subject: [PATCH 33/35] Update README.md --- README.md | 311 ++++++++++++++++-------------------------------------- 1 file changed, 90 insertions(+), 221 deletions(-) diff --git a/README.md b/README.md index 5821c1d..9df90e1 100644 --- a/README.md +++ b/README.md @@ -8,246 +8,115 @@ PHP4Delphi is a Delphi interface to PHP for Delphi {2009, ..., Rio} PHP4Delphi consists of 3 big subprojects: -1. PHP scripting (using PHP as a scripting language in Delphi applications) -PHP4Delphi allows to execute the PHP scripts within the Delphi program using -TpsvPHP component directly without a WebServer. -It is a PHP extension that enables you to write client-side GUI applications. -One of the goals behind it was to prove that PHP is a capable general-purpose scripting -language that is suited for more than just Web applications. -It is used by "Delphi for PHP" from CodeGear. +1. PHP scripting (using PHP as a scripting language in Delphi applications)
+PHP4Delphi allows to execute the PHP scripts within the Delphi program using
+TpsvPHP component directly without a WebServer.
+It is a PHP extension that enables you to write client-side GUI applications.
+One of the goals behind it was to prove that PHP is a capable general-purpose scripting
+language that is suited for more than just Web applications.
+It is used by "Delphi for PHP" from CodeGear.
-2. PHP extensions development framework (using Delphi to extend PHP functionality) -Visual Development Framework gives possibility to create custom PHP -Extensions using Delphi. -PHP extension, in the most basic of terms, is a set of instructions that is -designed to add functionality to PHP. +2. PHP extensions development framework (using Delphi to extend PHP functionality)
+Visual Development Framework gives possibility to create custom PHP
+Extensions using Delphi.
+PHP extension, in the most basic of terms, is a set of instructions that is
+designed to add functionality to PHP.
-3. PHP4Applications (integrate PHP in any application) -Supports C, C++, Visual Basic, VBA, C#, Delphi, Delphi .NET, Visual Basic .NET etc. +3. PHP4Applications (integrate PHP in any application)
+Supports C, C++, Visual Basic, VBA, C#, Delphi, Delphi .NET, Visual Basic .NET etc.
-More detail information available in php4Delphi manual php4Delphi.pdf +More detail information available in
php4Delphi manual php4Delphi.pdf -This is a source-only release of php4Delphi. It includes -design-time and run-time packages for Delphi 2009 through Delphi Rio +This is a source-only release of php4Delphi.
+It includes design-time and run-time packages for Delphi 2009 through Delphi Rio

- - -# History -7.5-rc1 2020 +# Features * Compatible with Delphi 2009, 10.1 Seattle, 10.2 Berlin, 10.3 Tokyo +* PHP 5.0.0 - 5.6.x support +* Unicode support ( php 5.5 & up ) +
Version history -7.4 Mar 2019 - -* Compatible with PHP 5.5.0 -* Compatible with PHP 5.6.0 -* Compatible with PHP 5.6.x -* Compatible with Delphi 2011, XE8, Seattle, Berlin -* Added unicode support - -7.3 Jan 2019 - -* Compatible with PHP 5.4.0 - -7.2 Oct 2009 - -* Compatible with Delphi 2010 -* Compatible with PHP 5.2.11 -* Compatible with PHP 5.3.0 (VC6 and VC9 editions : see PHP.INC for more details) - -7.1 Oct 2008 - -* Compatible with Delphi 2009 - -7.0 Apr 2007 - -* Compatible with Delphi 2007 -* Compatible with PHP 5.2.1 -* Compatible with PHP 4.4.6 -* Thread safe TpsvPHP component -* New component TPHPEngine introduced -* RunCode method reimplemented to solve "black horror" of pipes. -* Not fully compatible with previous version due to multithreading, but migration is easy. - -6.2 Feb 2006 - -* Compatible with PHP 5.2.0 -* Compatible with Delphi 2006 -* Compatible with PHP 5.1.1 -* Compatible with PHP 5.1.2 -* Code reorganized, some crap was removed -* Added headers support (Michael Maroszek) -* New demo projects -* PHP4Applications revisited - -6.1 - -* Compatible with PHP 5.0.4 -* Compatible with PHP 5.1.0b3 -* Compatible with Delphi 2005 - -6.0 - -* Translated Zend II API -* New PHP Object Model support -* PHP classes support for PHP4 and PHP5 -* New demo projects -* TPHPClass component compatible with PHP4 and PHP5 -* Added new property DLLFolder to psvPHP component -* New component PHPSystemLibrary - -5.5 fix 1 - -* New property RegisterGlobals (boolean) added to psvPHP component -* New property MaxExecutionTime (integer) added to psvPHP component - Maximum execution time of each script, in seconds -* New property MaxInputTime (integer) added to psvPHP component - Maximum amount of time each script may spend parsing request data -* New property SafeMode (boolean) added to psvPHP component -* New property SafeModeGid (boolean) added to psvPHP component - When safe_mode is on, UID/GID checks are bypassed when - including files from this directory and its subdirectories. (directory must also be in include_path or full path must - be used when including) -* Memory leak fixed in phpModules unit -* php_class demo project errors fixed -* psvPHP can load now PHP modules using dl() function - -5.5 - -* New component TPHPClass added (only for PHP 4) -* Added support of PHP 5 -* Improved speed of unloading of the PHP extensions under Apache -* Decreased size of the compiled modules (based on API only and developed using Visual FrameWork) -* ZendAPI unit is splitted to ZendAPI and ZendTypes units -* PHPAPI unit is splitted to PHPAPI and PHPTypes units -* New version of php4App - php4Applications subproject. - php4Applications allows to use php scripts in VB, C, C++, etc applications. - Demo projects for Delphi, VC and MS Word included. -* New property UseDelimiters added to TpsvPHP component. If UseDelimiters = true (by default) the - syntax of RunCode method parameter ACode should include standard script delimiters "" - to make RunCode and Execute method compatible. -* New parameters for OnScriptError event (error type, file name and line number) - -5.4 - -* Minor bugs fixed -* Documentation improved -* New property IniPath (folder where php.ini located) added to TpsvPHP component -* New functions translated in ZendAPI unit - -5.3 -* Added new public property ExecuteMethod to psvPHP component. - if ExecuteMethod is emGet, psvPHP receives variables as $_GET["variable"], - if ExecuteMethod is emServer (default), psvPHP receives variables as $variable. - Can be used to debug real PHP scripts with GET parameters. -* Added possibility to access published property of Delphi components from PHP -* Fixed problem with loading of PHP extension compiled wihout PHP4DELPHI_AUTOLOAD - option. - -5.2 -* Added dynamic attachement of all exported functions from php4ts.dll - in PHPAPI.pas -* New function for safe dynamic functions linking PHPStubInit and ZendStubInit - This functions can be used if you are planning to work with beta-version of PHP, - for example -* New unit zend_dynamic_array.pas -* New unit logos.pas - -5.0.3 -* Fixed bug when php function without parameters does not return value. -* New classes: TZendVariable and TZendValue in phpFunctions.pas -* New subproject: php4App - Using php4App you can integrate PHP not only with Delphi, but with VB, for example - -5.0.2 -* Fixed problem with assembler code in ZENDAPI.pas for Delphi 7 - -5.0.1 -* Fixed problem with number of parameters of zend_getparameters_ex function - -5.0 -* First version written in Delphi - - -1.0 - 4.0 -* php4Delphi was written in C as a DLL with simple Delphi wrapper - # Prerequisites -Before using php4Delphi library: - -If you have no PHP installed, you have to download and -install PHP separately. It is not included in the package. -You can download the latest version of PHP from -http://www.php.net/downloads.php - -ZEND API documentation available at http://www.zend.com -PHP API documentation available at http://www.php.net - -You need to ensure that the dlls which php uses can be found. -php4ts.dll is always used. If you are using any php extension dlls then you -will need those as well. -To make sure that the dlls can be found, you can either copy them to the -system directory (e.g. winnt/system32 or windows/system). - -Copy the file, php.ini-dist to your %WINDOWS% directory on -Windows 95/98 or to your %SYSTEMROOT% directory under Windows NT, -Windows 2000 or Windows XP and rename it to php.ini. Your %WINDOWS% or -%SYSTEMROOT% directory is typically: -c:\windows for Windows 95/98 -c:\winnt or c:\winnt40 for NT/2000/XP servers +Before using php4Delphi library:
+ +If you have no PHP installed, you have to download and
+install PHP separately. It is not included in the package.
+You can download the latest version of PHP from
+https://php.net/downloads/
+or
+https://windows.php.net/downloads/releases/archives/
+ +ZEND API documentation available at http://www.zend.com
+PHP API documentation available at http://www.php.net
+ +You need to ensure that the dlls which php uses can be found.
+php5ts.dll is always used. If you are using any php extension dlls then you
+will need those as well.
+To make sure that the dlls can be found, you can either copy them to the
+system directory (e.g. winnt/system32 or windows/system).
+ +Copy the file, php.ini-release to your php installation path
+and rename it to php.ini. By default php is located in
+%WINDOWS% or %SYSTEMROOT% directory:
+c:\windows for Windows
+c:\winnt or c:\winnt40 for NT/2000/XP servers
# Building -Uninstall previous installed version of php4Delphi Library from Delphi IDE. -Remove previously compiled php4Delphi packages from your hard disk. - -Select PHP version you are going to use. php4Delphi supports PHP 5.x, -but not at the same time. You have to compile php4Delphi for selected target version of PHP. - -Open PHP.INC file. -If you are using PHP5: -a) Uncomment (remove dot) from definition of suitable php, VC and widgetset version -b) Uncomment (remove dot) from definition of prefered features in the feature block of the PHP.INC file -c) Save PHP.INC file - -Use "File\Open..." menu item of Delphi IDE to open php4Delphi runtime -choose suitable Runtime package php4DelphiR(Your Delphi Version).dpk; In "Package..." window click "Compile" button to -compile packages. -Put compiled BPL file into directory that is accessible through the search PATH (i.e. DOS -"PATH" environment variable; -for example, in the Windows\System directory). - -After compiling php4Delphi run-time package you must install design-time -package into the IDE. - -Use "File\Open..." menu item to open design-time package php4DelphiD(Your Delphi Version).dpk -In "Package..." window click "Compile" button to compile the package -and then click "Install" button to register php4Delphi Library -components on the component palette. +Uninstall previous installed version of php4Delphi Library from Delphi IDE.
+Remove previously compiled php4Delphi packages from your disk.
+ +Select PHP version you are going to use. php4Delphi supports PHP 5.x,
+but not at the same time - this behaviour is legacy, and therefore will be removed.
+You have to compile php4Delphi for selected target version of PHP.
+ +a) Edit PHPver.INC file.
+ Specify PHPver constant:
+ PHPver = 05604; // php 5.6.4 -> 05 6 04
+b) Edit PHP.INC file.
+ Remove dot from preferred features
+ +Use "File\Open..." menu item of Delphi IDE to open php4Delphi group
+choose suitable group from /package directory;
+In "Package..." window select php4DelphiR,
+click "Compile" button to compile BPL.
+Put compiled BPL file into directory that is accessible through the search PATH
+("PATH" environment variable;
+for example, in the Windows\System directory).
+ +After compiling php4Delphi run-time package you must install design-time
+package into the IDE.
+ +In "Package..." window select php4DelphiD,
+click "Compile" button to compile the package
+and then click "Install" button to install php4Delphi components.
# Credits -Since this is a freeware you are strongly encouraged to look -at the source code and improve on the components if you want to. -Of course I would appreciate it if you would send me back the -changes and bug fixes you have made. +Since this is a freeware you are strongly encouraged to look
+at the source code and improve on the components if you want to.
+Of course we would appreciate if you create pull request with the
+changes and bug fixes you have made.
-For more information on the PHP Group and the PHP project, -please see . +For more information on the PHP Group and the PHP project,
+please see .
-PHP4Delphi forum -http://sourceforge.net/forum/forum.php?forum_id=324242 +PHP4Delphi forum
+http://sourceforge.net/forum/forum.php?forum_id=324242
-Authors: -Serhiy Perevoznyk -Belgium -serge_perevoznyk@hotmail.com -http://users.telenet.be/ws36637 -http://delphi32.blogspot.com +Authors:
+Serhiy Perevoznyk
+Belgium
+serge_perevoznyk@hotmail.com
+http://users.telenet.be/ws36637
+http://delphi32.blogspot.com
-Lew Zienin -Poland -levzenin@pm.me +Lew Zienin
+Ukraine
+levzenin@pm.me
-Nikita Ganzikov -Ukraine +Nikita Ganzikov
+Ukraine
pig-l@mail.ru - From 4440f17a4052e8d8979a30bf3c96e9c0ff5aea3f Mon Sep 17 00:00:00 2001 From: lion Date: Mon, 20 Jul 2020 02:43:10 +0300 Subject: [PATCH 34/35] Create versions.md --- versions.md | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 versions.md diff --git a/versions.md b/versions.md new file mode 100644 index 0000000..9af88d4 --- /dev/null +++ b/versions.md @@ -0,0 +1,141 @@ +## 7.5-rc1 +* Some of the ZVAL_*Type procedures moved: + ZVAL_*Type -> ZVALVAL( z: pzval, what: Type ) +* Major bug fixes (AV, Range Checking, NullPointer, php executing order, etc.) +* Introduced metatypes, so the types can be used regardless of Delphi version (x64/32, dcc version, other) +* Replaced assembler calls with pointer math +* Added procedures:
HFunc - hook library function
LFunc - load library function + +## 7.4 Mar 2019 + +* Compatible with PHP 5.5.0 +* Compatible with PHP 5.6.0 +* Compatible with PHP 5.6.x +* Compatible with Delphi 2011, XE8, Seattle, Berlin +* Added unicode support + +## 7.3 Jan 2019 + +* Compatible with PHP 5.4.0 +* Removed PHP 4 support + +## 7.2 Oct 2009 + +* Compatible with Delphi 2010 +* Compatible with PHP 5.2.11 +* Compatible with PHP 5.3.0 (VC6 and VC9 editions : see PHP.INC for more details) + +## 7.1 Oct 2008 + +* Compatible with Delphi 2009 + +## 7.0 Apr 2007 + +* Compatible with Delphi 2007 +* Compatible with PHP 5.2.1 +* Compatible with PHP 4.4.6 +* Thread safe TpsvPHP component +* New component TPHPEngine introduced +* RunCode method reimplemented to solve "black horror" of pipes. +* Not fully compatible with previous version due to multithreading, but migration is easy. + +## 6.2 Feb 2006 + +* Compatible with PHP 5.2.0 +* Compatible with Delphi 2006 +* Compatible with PHP 5.1.1 +* Compatible with PHP 5.1.2 +* Code reorganized, some crap was removed +* Added headers support (Michael Maroszek) +* New demo projects +* PHP4Applications revisited + +## 6.1 + +* Compatible with PHP 5.0.4 +* Compatible with PHP 5.1.0b3 +* Compatible with Delphi 2005 + +## 6.0 + +* Translated Zend II API +* New PHP Object Model support +* PHP classes support for PHP4 and PHP5 +* New demo projects +* TPHPClass component compatible with PHP4 and PHP5 +* Added new property DLLFolder to psvPHP component +* New component PHPSystemLibrary + +## 5.5 fix 1 + +* New property RegisterGlobals (boolean) added to psvPHP component +* New property MaxExecutionTime (integer) added to psvPHP component - Maximum execution time of each script, in seconds +* New property MaxInputTime (integer) added to psvPHP component - Maximum amount of time each script may spend parsing request data +* New property SafeMode (boolean) added to psvPHP component +* New property SafeModeGid (boolean) added to psvPHP component - When safe_mode is on, UID/GID checks are bypassed when + including files from this directory and its subdirectories. (directory must also be in include_path or full path must + be used when including) +* Memory leak fixed in phpModules unit +* php_class demo project errors fixed +* psvPHP can load now PHP modules using dl() function + +## 5.5 + +* New component TPHPClass added (only for PHP 4) +* Added support of PHP 5 +* Improved speed of unloading of the PHP extensions under Apache +* Decreased size of the compiled modules (based on API only and developed using Visual FrameWork) +* ZendAPI unit is splitted to ZendAPI and ZendTypes units +* PHPAPI unit is splitted to PHPAPI and PHPTypes units +* New version of php4App - php4Applications subproject. + php4Applications allows to use php scripts in VB, C, C++, etc applications. + Demo projects for Delphi, VC and MS Word included. +* New property UseDelimiters added to TpsvPHP component. If UseDelimiters = true (by default) the + syntax of RunCode method parameter ACode should include standard script delimiters "" + to make RunCode and Execute method compatible. +* New parameters for OnScriptError event (error type, file name and line number) + +## 5.4 + +* Minor bugs fixed +* Documentation improved +* New property IniPath (folder where php.ini located) added to TpsvPHP component +* New functions translated in ZendAPI unit + +## 5.3 +* Added new public property ExecuteMethod to psvPHP component. + if ExecuteMethod is emGet, psvPHP receives variables as $_GET["variable"], + if ExecuteMethod is emServer (default), psvPHP receives variables as $variable. + Can be used to debug real PHP scripts with GET parameters. +* Added possibility to access published property of Delphi components from PHP +* Fixed problem with loading of PHP extension compiled wihout PHP4DELPHI_AUTOLOAD + option. + +## 5.2 +* Added dynamic attachement of all exported functions from php4ts.dll + in PHPAPI.pas +* New function for safe dynamic functions linking PHPStubInit and ZendStubInit + This functions can be used if you are planning to work with beta-version of PHP, + for example +* New unit zend_dynamic_array.pas +* New unit logos.pas + +## 5.0.3 +* Fixed bug when php function without parameters does not return value. +* New classes: TZendVariable and TZendValue in phpFunctions.pas +* New subproject: php4App + Using php4App you can integrate PHP not only with Delphi, but with VB, for example + +## 5.0.2 +* Fixed problem with assembler code in ZENDAPI.pas for Delphi 7 + +## 5.0.1 +* Fixed problem with number of parameters of zend_getparameters_ex function + +## 5.0 +* First version written in Delphi + + +## 1.0 - 4.0 +* php4Delphi was written in C as a DLL with simple Delphi wrapper + From aefc942ba993133b1b5e574ec30aef551a01d1a1 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 20 Jul 2020 15:16:39 +0300 Subject: [PATCH 35/35] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9df90e1..216be78 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Extensions using Delphi.
PHP extension, in the most basic of terms, is a set of instructions that is
designed to add functionality to PHP.
-3. PHP4Applications (integrate PHP in any application)
+3. PHP4Applications (integrate PHP in any application)
Supports C, C++, Visual Basic, VBA, C#, Delphi, Delphi .NET, Visual Basic .NET etc.