Inside VCL for PHP / Delphi for PHP F÷ PHP GaGFGsG0Gy6ä$Π· GlGGGMGMG2GVGyFþ i '0¿ Inside VCL...

36
䝬䝇䝍 䝍䜲䝖䝹䛾᭩ᘧタᐃ Inside VCL for PHP / Delphi for PHPPHP䝡䝆䝳䜰䝹㛤Ⓨ 䜰䝘䝝䜲䝮䝔䜽䝜䝻䝆䞊ᰴᘧ♫䞉௦⾲⥾ᙺ 䛿䜔䛧 䛴䛸䜐 B5PHP䝔䜽䝙䜹䝹䝉䝑䝅䝵䞁

Transcript of Inside VCL for PHP / Delphi for PHP F÷ PHP GaGFGsG0Gy6ä$Π· GlGGGMGMG2GVGyFþ i '0¿ Inside VCL...

Inside VCL for PHP / Delphi for PHP PHP

B5 PHP

22

• Delphi for PHP • Inside VCL for PHP / VCL4PHP• Component Go!

3

Delphi for PHP

4

Delphi for PHP

• Delphi for PHP

Delphi PHP

•Delphi IDE•Delphi VCL for PHP

5

Delphi for PHP

• PHP Ruby Python LL

• Delphi for PHP

6

Web

• C/S Web

7

Web RAD

• Web

WebpWebp

DelphiDelphi

DB

WebpWebp

Delphi for PHPDelphi for PHP

DB

Delphi

8

Delphi for PHP MVC

• MVC(Model View Controler) Delphi for PHP

ModelDataModule

View+ControllerPage

DB

Model

Controller

View

DB

9

Ajax

• Delphi for PHP Ajax xajax VCL for PHP PHP JavaScript

• Xajax 0.2.5 (stable release)

0.5

• http://www.xajaxproject.org/en/home/

10

Inside VCL for PHP / VCL4PHP

11

VCL for PHP

• Delphi for PHP VCL for PHP

ObjectObject

ComponentEditorComponentEditor

FieldField

FilerFiler

Persistent

PropertyEditorPropertyEditor

CollectionCollection

POST/GET

Persistent

DatabaseEditor

XmlReader

12

Page Object

• Page

PagePage

CustomPageCustomPage

ScrollingControlScrollingControl

FocusControlFocusControl

ControlControl

ComponentComponent

PersistentPersistent

ObjectObject

Delphi for PHP IDExml.php

13

FocusControl Object

ControlControl

ComponentComponent

PersistentPersistent

ObjectObject

system.in.php(98)function __construct()

{global $input;

//Assign the global input object so it can be used from inside$this->input=$input;

}

controls.inc.php(796)function __construct($aowner=null)

{$this->_font=new Font();$this->_font->_control=$this;

//Calls inherited constructorparent::__construct($aowner);

}

FocusControlFocusControl

controls.inc.php(2283)function __construct($aowner=null)

{//Creates the controls list.$this->controls=new Collection();

//Calls inherited constructor.parent::__construct($aowner);

$this->_layout=new Layout();$this->_layout->_control=$this;

}

classes.inc.php(1195) function __construct($aowner=null)

{//Calls the inherited constructorparent::__construct($aowner);

//List of children$this->components=new Collection();

//Initializes the owner$this->owner=null;

//Initializes the name$this->_name="";

$this->_controlstate=0;

if ($aowner!=null){

//If there is an ownerif (is_object($aowner)){

//Stores it$this->owner=$aowner;

//Adds itself to the list of components from the owner

$this->owner->insertComponent($this);}else{

throw new Exception("Owner must be an object");

}}

}

14

•loadResource(__FILE__)

Page Show()

<?phprequire_once("vcl/vcl.inc.php");//Includesuse_unit("forms.inc.php");use_unit("extctrls.inc.php");use_unit("stdctrls.inc.php");

//Class definitionclass Unit1 extends Page{

public $Button1 = null;public $Label1 = null;function Button1Click($sender, $params){

}

}

global $application;

global $Unit1;

//Creates the form$Unit1=new Unit1($application);

//Read from resource file$Unit1->loadResource(__FILE__);

//Shows the form$Unit1->show();

?>

※ 1 1

15

Control

PersistentComponentPage

__construct($application)__construct($application)

show()show()

LoadResouce(__FILE__)LoadResouce(__FILE__)

readFromResource()readFromResource()

unserialize()unserialize()

unserializeChildren()unserializeChildren()

loadedChildren()loadedChildren()

loaded()loaded()

preinit()preinit()

init()init()

※ Page Object

16

Published Public

• Delphi for PHP

• Public

• Published

• Public Publish

<Public >protected $_test=null;

function readtest() { return $this->_test; }function writetest($value) { $this->_test=$value; }function defaulttest() { return null; }

<Published >protected $_test=null;

function gettest() { return $this->_test; }function settest($value) { $this->_test=$value; }function defaulttest() { return null; }

※※※※

Default

17

• VCL for PHP Delphi VCLset/get

• PHP __get() __set() Object

• get + hogehoge / set + hogehoge Published

• read + hogehoge / write + hogehogte Public

18

Published

• Persistent Serialize()• PHP5 set

• SerializeChildren +

19

• Persistent Serialize / UnSerialize Serialize PHP

shutdown_function

forms.inc.php(58) function VCLShutdown(){

global $application;

//This is the moment to store all properties in the session to retrieve them later$application->serializeChildren();

//Uncomment this to get what is stored on the session at the last step of your scripts/*echo "<pre>";print_r($_SESSION);echo "<pre>";*/

}

register_shutdown_function("VCLShutdown");

20

AName AName

Object __get()Object __get()

‘get’.Aname ‘get’.Aname

‘read’.Aname‘read’.Aname

ComponentComponent

‘get’.Aname‘get’.Aname

‘read’.Aname‘read’.Aname

Aname Aname

Object __set()Object __set()

‘set’.Aname ‘set’.Aname

‘write’.Aname‘write’.Aname

‘set’.Aname( )‘set’.Aname( )

‘write’.Aname( )‘write’.Aname( )

21

80%

※ Core2Quad9550+Mem4G+WindowsXP SP2Delphi for PHP IDE

22

//Labelfunction Button1Click($sender, $params){$labelCount = 0;foreach($this->controls->items as $key => $obj){if ($obj->ClassName() == 'Label'){$lastLabel = $obj;$labelCount++;}}$newLabel = new Label($this);$newLabel->Name = 'Label'.($labelCount+1);$newLabel->Top = $lastLabel->Top + 16;$newLabel->Left = $lastLabel->Left;$newLabel->Caption = 'Label'.($labelCount+1);$newLabel->Parent = $this;}

$newLabel = new Label();$this->insertComponent($newLabel);

controls

23

Component Go!

24

Component

25

<?phprequire_once("vcl/vcl.inc.php");//Includes

//Class definitionclass SampleCompo extends Component{function __construct($aowner = null){parent::__construct($aowner);

}

function dumpContents(){parent::dumpContents();

}}

?>

<?phprequire_once("vcl/vcl.inc.php");use_unit("designide.inc.php");

setPackageTitle("Put the title of your package here"); //Change this setting to the path where the icons for the components residesetIconPath("./icons");

//Change yourunit.inc.php to the php file which contains the component code

registerComponents("Samples",array("SampleCompo"),"unit1.inc.php");?>

use_unit

26

• Delphi for PHP

PackagePackage

Component Component Component

27

Package

<?phprequire_once("vcl/vcl.inc.php");use_unit("designide.inc.php");

setPackageTitle("Anaheim Technology Components");//Change this setting to the path where the icons for the components residesetIconPath("./icons");

//Change yourunit.inc.php to the php file which contains the component coderegisterComponents("Anaheim-Tech",array("PHPExcelSimpleReport"),"phpexcel.inc.php");

registerPropertyValues("PHPExcelSimpleReport","Orientation",array('Default','Portrait','Landscape'));registerPropertyValues("PHPExcelSimpleReport","PaperSize",array('A4','A3'));registerPropertyValues("PHPExcelSimpleReport","DataSet",array('DataSet'));registerPropertyEditor("PHPExcelSimpleReport","TitleRowColor","TSamplePropertyEditor","native");

?>

bmp

28

• Delphi

• < >

• TStringListPropertyEditor SQL

• TItemsPropertyEditor Items

• TGridColumnsPropertyEditor DBGrid Columns

• TFormValidatorRulesPropertyEditor FormValidator Rules

• TImagePropertyEditor Image

• TImageListPropertyEditor ImageList

• THTMLPropertyEditor Caption HTML

• TValueListPropertyEditor

• TFilenamePropertyEditor

• TAbsolutePathPropertyEditor

• TSamplePropertyEditor

29

• Published

Set Published

protected $_creator = "";//Creatorpublic function setCreator($pValue){$this->_creator = $pValue;}public function getCreator(){return $this->_creator;}public function defaultCreator(){return null;}

30

PHPExcel

• PHPExcel Excel2007/Excel2000

• Excel 2007 (spreadsheetML)

• BIFF8 (Excel 97 and higher)

• PHPExcel Serialized Spreadsheet

• CSV (Comma Separated Values)

• HTML

• PDF

• Excel 2007 (spreadsheetML)

• BIFF5 (Excel 5.0 / Excel 95), BIFF8 (Excel 97 and higher)

• PHPExcel Serialized Spreadsheet

• Excel 2003 XML format

• Symbolic Link (SYLK)

• CSV (Comma Separated Values)

31

PHPExcel

• PHPExcel zipPHP

Delphi for PHP IDE

<Delphi for PHP2.0 >¥apache2

...

¥php

¥phpExcel

¥Classes

¥Documentation

¥Tests

...

¥vcl

32

PHPExcel

• PHPExcel• Columns

• Creator

• DataSet

• Filename

• Orientation

• PaperSize A4 A3

• Report_Title

• Sheetname

• TitleRowColor

• WriterType Excel5 Excel2007

33

• set Component fixupProperty

//DataSetprotected $_dataset = null;public function setDataSet($pValue){$this->_dataset = $this->fixupProperty($pValue);}public function getDataSet(){return $this->_dataset;}public function defaultDataSet(){return null;}

34

35

Firebird

36

•• 157-0072 1-22-26-S-208

• TEL 03-5787-7791 FAX 03-5787-7792

• http://www.anaheim-tech.com/

• Delphi• Firebird/InterBase• Delphi for PHP

36