# php-go **Repository Path**: kitech/php-go ## Basic Information - **Project Name**: php-go - **Description**: Write PHP extension using go/golang. Zend API wrapper for go/golang. - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: https://github.com/kitech/php-go - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 4 - **Created**: 2016-05-16 - **Last Updated**: 2022-12-21 ## Categories & Tags **Categories**: utils **Tags**: None ## README ### php-go Write PHP extension using go/golang. Zend API wrapper for go/golang. Simple, easy, fun to write PHP extensions. ### Features * function support * struct/class support * constant support * primitive data type as parameters and return values, (u)int*/float*/string/bool * complex data type as parameters, map/slice/array * all can be done by programitic ### Environment * Modern Linux/Unix system * PHP 5.5+/7.x * go version 1.4+ ### Build & Install go get: coming soon mannual: cd $GOPATH/src/ git clone https://github.com/kitech/php-go.git ln -s php-go/zend ./ ln -s php-go/phpgo ./ make -C php-go/ ls -lh php-go/hello.so php56 -d extension=php-go/hello.so php-go/examples/hello.php note: php7 support not complete, use php5 for test. ### Examples import "phpgo" func module_startup(ptype int, module_number int) int { return 0 } func module_shutdown(ptype int, module_number int) int { return 0 } func request_startup(ptype int, module_number int) int { return 0 } func request_shutdown(ptype int, module_number int) int { return 0 } function foo_in_go() { } type Bar struct{} func NewBar() *Bar{ return &Bar{} } func init() { phpgo.InitExtension("mymod", "1.0") phpgo.RegisterInitFunctions(module_startup, module_shutdown, request_startup, request_shutdown) phpgo.AddFunc("foo_in_php", foo_in_go) phpgo.AddClass("bar_in_php", NewBar) } ### TODO - [ ] install with go get - [ ] improve php7 support - [ ] namespace support Contributing ------------ 1. Fork it 2. Create your feature branch (``git checkout -b my-new-feature``) 3. Commit your changes (``git commit -am 'Add some feature'``) 4. Push to the branch (``git push origin my-new-feature``) 5. Create new Pull Request