This repository was archived by the owner on May 6, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
398 lines (325 loc) · 15.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="PHP code analysis and utilities for the Atom editor">
<meta property="og:title" content="PHP Integrator">
<meta name="description" content="PHP code analysis and utilities for the Atom editor">
<meta property="og:description" content="PHP code analysis and utilities for the Atom editor">
<link rel="canonical" href="https://php-integrator.github.io/">
<meta property="og:url" content="https://php-integrator.github.io/">
<meta property="og:site_name" content="PHP Integrator">
<meta property="og:image" content="https://php-integrator.github.io/images/logo.png">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "PHP Integrator",
"headline": "PHP Integrator",
"image": "https://php-integrator.github.io/images/logo.png",
"description": "PHP code analysis and utilities for the Atom editor",
"logo": "https://php-integrator.github.io/images/logo.png",
"url": "https://php-integrator.github.io/"
}
</script>
<title>PHP Integrator</title>
<link rel="icon" href="images/logo.png">
<style type="text/css">
* {
margin: 0;
}
body {
font-family: sans-serif;
font-size: 18px;
color: #333333;
background-color: white;
}
h1, h2, h3, h4 {
line-height: 1.2;
margin-top: 1.5em;
}
h2:before {
content: ' ⁓ ';
}
p {
line-height: 1.5;
margin-top: 1.5em;
}
ul li, ol li {
line-height: 1.7;
}
a {
color: #333333;
}
ul, ol {
margin-top: 15px;
}
a:hover {
text-decoration: none;
}
.content {
max-width: 952px;
margin-left: auto;
margin-right: auto;
margin-top: 50px;
animation: fadeIn 0.5s 1;
}
.title {
margin-top: 15px;
}
.left {
order: 1;
flex: 0 0 50%;
}
.right {
order: 2;
flex: 0 0 50%;
}
.left p, .left h3 {
padding-right: 50px;
}
.right p, .right h3 {
padding-left: 50px;
}
.left img, .right img {
width: 100%;
}
.row {
display: inline-flex;
margin-top: 25px;
}
.center {
text-align: center;
}
.small-text {
font-size: 13px;
}
.bottom-bar {
padding: 10px;
color: #444444;
background-color: #ddd;
}
@keyframes fadeIn {
0% { opacity: 0; margin-top: 25px; }
100% { opacity: 1; margin-top: 50px; }
}
</style>
</head>
<body>
<a href="https://github.com/php-integrator/atom-base" class="github-corner" aria-label="View source on Github"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
<div class="content">
<div class="center">
<img src="images/logo.png" alt="Logo" />
</div>
<h1 id="title" class="title center">PHP Integrator</h1>
<div class="center">
<em>PHP code analysis and utilities for the Atom editor</em>
<div class="small-text">
<a href="https://github.com/php-integrator/">Show me the source</a>
</div>
</div>
<p>
PHP Integrator is an open-source project that provides code analysis and utilities for PHP projects. It
consists of a set of packages for the <a href="https://www.atom.io">Atom</a> editor, backed by
<a href="https://gitlab.com/php-integrator/core">a socket server</a> that performs the heavy lifting,
integrating a powerful development environment inside your text editor.
</p>
<div class="row">
<div class="right">
<img src="images/autocompletion.png" />
</div>
<div class="left">
<h3 id="autocompletion">Autocompletion</h3>
<p>
One of the most useful features in a programmer's toolbox is autocompletion, which suggests:
</p>
<ul>
<li>Relevant object class members</li>
<li>Global functions and constants</li>
<li>Local variables</li>
<li><a href="https://github.com/php-integrator/atom-autocompletion">And more</a></li>
</ul>
<p class="small-text">
<a href="https://github.com/php-integrator/atom-autocompletion">View the source</a>
</p>
</div>
</div>
<div class="row">
<div class="left">
<img src="images/code-navigation.png" />
</div>
<div class="right">
<h3 id="code-navigation">Code Navigation / Goto Definition</h3>
<p>
Code navigation allows you to effortlessly travel through your codebase by clicking the names
of method calls, classes, interfaces, and other structural elements.
</p>
<p>
Navigating will immediately take you to the relevant location in your code base.
</p>
<!-- <p class="small-text">
<a href="https://github.com/php-integrator/atom-navigation">View the source</a>
</p> -->
</div>
</div>
<div class="row">
<div class="right">
<img src="images/annotations.png" />
</div>
<div class="left">
<h3 id="annotations">Annotations</h3>
<p>
Annotations provide you with relevant information about your code, such as that a parent property is
being overridden or an interface method is being implemented.
</p>
<p>
As an added bonus, clicking them will take you to the related element, whenever possible.
</p>
<p class="small-text">
<a href="https://github.com/php-integrator/atom-annotations">View the source</a>
</p>
</div>
</div>
<div class="row">
<div class="left">
<img src="images/tooltips.png" />
</div>
<div class="right">
<h3 id="tooltips">Tooltips</h3>
<p>
Tooltips display documentation for structural elements. Think extended docblock descriptions,
method parameter descriptions, return type descriptions and exceptions thrown.
</p>
<!-- <p class="small-text">
<a href="https://github.com/php-integrator/atom-tooltips">View the source</a>
</p> -->
</div>
</div>
<div class="row">
<div class="right">
<img src="images/refactoring.png" />
</div>
<div class="left">
<h3 id="refactoring">Refactoring</h3>
<p>
Refactoring is the component that has the most potential. Features currently include:
</p>
<ul>
<li>Generating constructors</li>
<li>Overriding existing methods</li>
<li>Getter and setter generation</li>
<li>Stubbing interface methods and abstract methods</li>
</ul>
<p class="small-text">
<a href="https://github.com/php-integrator/atom-refactoring">View the source</a>
</p>
</div>
</div>
<div class="row">
<div class="left">
<img src="images/call-tips.png" />
</div>
<div class="right">
<h3 id="call-tips">Call Tips / Signature Help</h3>
<p>
Call tips are much like tooltips, but differ only in that they display items directly related to
function or method calls, such as their expected parameters with their types and default values.
</p>
<!-- <p class="small-text">
<a href="https://github.com/php-integrator/atom-call-tips">View the source</a>
</p> -->
</div>
</div>
<div class="row">
<div class="right">
<img src="images/linting.png" />
</div>
<div class="left">
<h3 id="linting">Linting</h3>
<p>
The list wouldn't be complete without a way to highlight errors before stumbling upon them whilst
running the code. Finding nonexistent class names, docblock issues and missing global functions are
all included in this process.
</p>
<!-- <p class="small-text">
<a href="https://github.com/php-integrator/atom-linter">View the source</a>
</p> -->
</div>
</div>
<div class="row"> </div>
<h2 id="what-do-i-need">Awesome! What do I need?</h2>
<p>
To run, you will need at least:
</p>
<ul>
<li><em>PHP 7.1 or higher <sup>*</sup></em> — The code you're actually writing can be anything ranging from PHP 5.2 up to (and including) PHP 7.1.</li>
<li><em>php-sqlite (the PDO variant) and SQLite >= 3.7.11</em> — Required as back end for the indexing database.</li>
<li><em>php-mbstring</em> — Required as source code can contain Unicode characters in strings or comments.</li>
<li><em>openssl</em> — Required to fetch dependencies properly via Composer.</li>
<li><em><a href="https://github.com/danielbrodin/atom-project-manager">atom-project-manager</a></em> — Fire up your active project and go to <em>Packages → PHP Integrator → Set Up Current Project</em> (or use the command palette).</li>
<li><em>Proper docblocks and type hinting</em> - See <a href="https://gitlab.com/php-integrator/core/wikis">our wiki</a> for more information.</li>
</ul>
<p>
The following modules aren't directly used, but they may be required for installation in Atom via Composer or by dependencies:
</p>
<ul>
<li><em>php-curl</em></li>
<li><em>php-xml</em></li>
</ul>
<p class="small-text">
<sup>*</sup> Still running PHP 5.6 or PHP 7.0? Look for the Atom packages suffixed with the text
-legacy-php56, such as <a href="https://github.com/php-integrator/atom-base-legacy-php56">php-integrator-base-legacy-php56</a>.
These are unmaintained, but may provide a stopgap until you are able to update.
</p>
<h2 id="how-do-i-make-it-work">How do I make it work?</h2>
<p>
In a nutshell:
</p>
<ol>
<li>Install <em>PHP 7.1 or higher</em>.</li>
<li>In <code>php.ini</code>, enable the extensions <em>mbstring, openssl</em> and <em>sqlite (the PDO variant)</em>.</li>
<li>In Atom editor, install the <a href="https://atom.io/packages/php-integrator-base">base package</a> and its dependencies.</li>
<li>If necessary, give the path to your PHP binary in <em>Settings → Packages → php-integrator-base Settings → Core</em>.</li>
<li>Restart Atom and allow the base package to install the core.</li>
<li>Add your project in <em>Project Manager</em> and set it up.</li>
</ol>
<h2 id="what-is-it-really">Wait, now I'm confused, what is it really?</h2>
<p>
At the moment, PHP Integrator itself consists of a set of Atom packages written in CoffeeScript, backed by
a socket server written in PHP. The PHP server is separate from the Atom packages, but is installed
automatically to make the process of installing it as painless as possible for Atom users.
</p>
<p>
Various additional functionalities, such as autocompletion and refactoring, can be installed as separate
Atom packages as well. These packages interface with the base package via a CoffeeScript service. Most of
the heavy lifting, such as indexing, analyzing types and static analysis is done by the PHP server.
</p>
<h2 id="is-it-really-exclusive-to-atom">Is it really exclusive to Atom?</h2>
<p>
The packages and CoffeeScript parts are dependent on Atom, but the PHP server, which does the heavy lifting,
is not dependent on Atom at all. The PHP server was originally part of the base Atom package, but
<a href="https://gitlab.com/php-integrator/core">has been split off into a separate repository for reuse</a>.
</p>
<h2 id="what-about-making-it-a-language-server">What about making it a language server?</h2>
<p>
The Language Server Protocol has gathered some interest of late. Currently the core is not a compliant
language server, but it already is a socket server using JSON-RPC for communication. Becoming compliant with
the protocol is on the roadmap and would make the core much more reusable for other editors.
</p>
<h2 id="where-is-the-code">Where is the code?</h2>
<p><a href="https://github.com/php-integrator/">Right here on GitHub</a>, for the packages, and <a href="https://gitlab.com/php-integrator/core">right here on GitLab</a>, for the core.</p>
<p class="center">
<img src="images/gplv3-127x51.png" alt="GPLv3 Logo" />
</p>
</div>
<br>
<div id="bottom-bar" class="bottom-bar">
<div id="donations" class="small-text center">
If you think this project deserves it,
<strong><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=YKTNLZCRHMRTJ">sending me some coffee beans</a></strong>
is most appreciated!
</div>
</div>
</body>