OLD | NEW |
| (Empty) |
1 This directory contains the Protocol Buffers runtime implementation via both a | |
2 pure PHP package and a native c extension. The pure PHP package is intended to | |
3 provide usability to wider range of PHP platforms, while the c extension is | |
4 intended to provide higher performance. Both implementations provide the same | |
5 runtime APIs and share the same generated code. Users don’t need to re-generate | |
6 code for the same proto definition when they want to switch the implementation | |
7 later. | |
8 | |
9 Both implementations make use of generated PHP code that defines message and | |
10 enum types in PHP. We strongly recommend using protoc's PHP generation support | |
11 with .proto files. The build process in this directory only installs the | |
12 extension/package; you need to install protoc as well to have PHP code | |
13 generation functionality. | |
14 | |
15 ## Requirements | |
16 | |
17 To use PHP runtime library requires: | |
18 | |
19 - C extension: PHP 5.5.x or 5.6.x. | |
20 - PHP package: PHP 5.5, 5.6 or 7. | |
21 | |
22 ## Installation | |
23 | |
24 ### C Extension | |
25 | |
26 #### Prerequirements | |
27 | |
28 To install the c extension, the following tools are needed: | |
29 * autoconf | |
30 * automake | |
31 * libtool | |
32 * make | |
33 * gcc | |
34 * pear | |
35 * pecl | |
36 | |
37 On Ubuntu, you can install them with: | |
38 ``` | |
39 sudo apt-get install php-pear php5-dev autoconf automake libtool make gcc | |
40 ``` | |
41 On other platforms, please use the corresponding package managing tool to | |
42 install them before proceeding. | |
43 | |
44 #### Installation from Source (Building extension) | |
45 | |
46 To build the c extension, run the following command: | |
47 ``` | |
48 cd ext/google/protobuf | |
49 pear package | |
50 sudo pecl install protobuf-{VERSION}.tgz | |
51 ``` | |
52 | |
53 #### Installation from PECL | |
54 | |
55 When we release a version of Protocol Buffers, we will upload the extension to | |
56 [PECL](https://pecl.php.net/). To use this pre-packaged extension, simply | |
57 install it as you would any other extension: | |
58 | |
59 ``` | |
60 sudo pecl install protobuf-{VERSION} | |
61 ``` | |
62 | |
63 ### PHP Package | |
64 | |
65 #### Installation from composer | |
66 | |
67 Simply add "google/protobuf" to the 'require' section of composer.json in your | |
68 project. | |
69 | |
70 ### Protoc | |
71 | |
72 Once the extension or package is installed, if you wish to generate PHP code | |
73 from a `.proto` file, you will also want to install the Protocol Buffers | |
74 compiler (protoc), as described in this repository's main `README` file. The | |
75 version of `protoc` included in the latest release supports the `--php_out` | |
76 option to generate PHP code: | |
77 ``` | |
78 protoc --php_out=out_dir test.proto | |
79 ``` | |
80 | |
81 ## Usage | |
82 | |
83 For general guide: | |
84 https://developers.google.com/protocol-buffers/phptutorial/ | |
85 For generated code: | |
86 https://developers.google.com/protocol-buffers/docs/reference/php-generated | |
87 | |
88 Known Issues | |
89 ------------ | |
90 | |
91 * Missing native support for well known types. | |
92 * Missing support for proto2. | |
93 * No API provided for clear/copy messages. | |
94 * No API provided for encoding/decoding with stream. | |
95 * Map fields may not be garbage-collected if there is cycle reference. | |
96 * No debug information for messages in c extension. | |
97 * HHVM not tested. | |
98 * C extension not tested on windows, mac, php 7.0. | |
99 * Message name cannot be Empty. | |
OLD | NEW |