Skip to content

Commit 905f671

Browse files
authored
Create README.md
1 parent 8c01d73 commit 905f671

1 file changed

Lines changed: 208 additions & 0 deletions

File tree

README.md

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
phpCompressor
2+
==========
3+
4+
5+
phpCompressor - Основная задача сжатие кода PHP, также возможно использовать в качесте простого обфускатора PHP.
6+
Компрессор сжимает код за счет удаления пробелов, переносов строк коментарием кода,
7+
сокращения названий локальных переменных в функциях, сокращения названий свойст классов (переменных),
8+
сокращения названий методов классов.
9+
10+
Настройки сокращения
11+
=====
12+
13+
* Сокращение названий локальных переменных в функциях
14+
* Сокращение названий свойст классов (переменных)
15+
* Сокращение названий методов классов
16+
* Удаление пробелов коментариев и переносов строк
17+
18+
Принцип сокращения названий
19+
=====
20+
Для сокращения названий используются алиасы, которые формируются в зависимости от частоты использования названия.
21+
22+
Например: название 'data' используется 98 раз в коде, 'options' - 70раз, 'values' - 68 раз и т.д. по угасающей...
23+
Результат будет таким
24+
25+
* 'data' => 'a'
26+
* 'options' => 'b'
27+
* 'values' => 'c'
28+
* '...' => 'd...aa'
29+
* 'rare_name' => 'ab'
30+
* .....
31+
32+
33+
34+
Установка
35+
=====
36+
37+
Для установки воспользуйтесь композером [composer](https://getcomposer.org):
38+
39+
php composer.phar require genasyst/php-compressor
40+
41+
42+
Примеры использования
43+
=====
44+
45+
```php
46+
<?php
47+
48+
$compressor = new \Genasyst\phpCompressor\Compressor();
49+
50+
$code = 'echo $data;..... ';
51+
/* Установка кода с открывающим тегом <?php вначале */
52+
$compressor->setContentByCode('<?php '.$code);
53+
54+
/* Установка кода из php файла */
55+
$file_path = __DIR__ .'/ExampleTestEcho.php';
56+
$compressor->setContentByFile($file_path);
57+
58+
59+
/**
60+
* НАСТРОЙКИ
61+
*
62+
* Устанавливаем сокращение локальных переменных
63+
*/
64+
$compressor->compressLocalVariablesName();
65+
66+
/**
67+
* Устанавливаем сокращение свойств класса
68+
*/
69+
$compressor->compressObjectsVariablesName();
70+
71+
/**
72+
* Устанавливаем сокращение названий методов
73+
*/
74+
$compressor->compressObjectsMethodsName();
75+
76+
77+
/**
78+
* ИСКЛЮЧЕНИЕ СЖАТИЯ НАЗВАНИЙ
79+
*
80+
*
81+
* Устанавливаем исключение названий свойств объекта
82+
*/
83+
$compressor->setExcludeNames(
84+
\Genasyst\phpCompressor\Compressor::COMPRESS_TYPE_LOCAL_VARIABLES,
85+
['not_compress_local' => 'not_compress_local']
86+
);
87+
88+
/**
89+
* Устанавливаем исключение названий свойств объекта
90+
*/
91+
$compressor->setExcludeNames(
92+
\Genasyst\phpCompressor\Compressor::COMPRESS_TYPE_OBJECT_VARIABLES,
93+
['not_compressed_name' => 'not_compressed_name']
94+
);
95+
96+
/**
97+
* Устанавливаем исключение названий методов объекта
98+
*/
99+
$compressor->setExcludeNames(
100+
\Genasyst\phpCompressor\Compressor::COMPRESS_TYPE_OBJECT_METHODS,
101+
['thisMethodNameNotCompressed' => 'thisMethodNameNotCompressed']
102+
);
103+
104+
105+
/* Установка кода из куска */
106+
$code = <<<CODE
107+
function test1(\$long_name1, \$not_compress_local = ' ++') {
108+
\$long_name1 = strtolower(\$long_name1);
109+
if(strlen(\$long_name1) > 10) {
110+
return strtoupper(\$long_name1);
111+
}
112+
return ucfirst(\$long_name1).\$not_compress_local;
113+
}
114+
class My {
115+
116+
protected \$long_variable = '';
117+
118+
protected \$super_long_variable = '';
119+
120+
protected \$not_compressed_name = '';
121+
122+
public function __construct(\$long_variable, \$super_long_variable, \$not_compressed_name)
123+
{
124+
\$this->long_variable = \$long_variable;
125+
\$this->super_long_variable = \$super_long_variable;
126+
\$this->not_compressed_name = \$not_compressed_name;
127+
}
128+
129+
public function getSuperLongVariable()
130+
{
131+
return \$this->super_long_variable;
132+
}
133+
134+
public function getLongVariable()
135+
{
136+
return \$this->long_variable;
137+
}
138+
139+
public function thisMethodNameNotCompressed()
140+
{
141+
return \$this->not_compressed_name;
142+
}
143+
}
144+
145+
\$my = new My('lONg','SuperLongUpper','NOT_compressed');
146+
147+
echo test1(\$my->getLongVariable());//Long ++
148+
echo test1(\$my->getSuperLongVariable());//SUPERLONGUPPER ++
149+
echo test1(\$my->thisMethodNameNotCompressed());//NOT_COMPRESSED ++
150+
CODE;
151+
$compressor->parseBlock($code);
152+
153+
154+
/**
155+
* Запускаем сжатие
156+
*/
157+
$compressor->compress();
158+
159+
160+
/**
161+
* Получаем обратно сжатый код
162+
*/
163+
$code = $compressor->getContent();
164+
echo $code;
165+
/**
166+
* RESULT
167+
* function test1($a, $not_compress_local = ' ++')
168+
* {
169+
* $a = strtolower($a);
170+
* if (strlen($a) > 10) {
171+
* return strtoupper($a);
172+
* }
173+
* return ucfirst($a) . $not_compress_local;
174+
* }
175+
* class My
176+
* {
177+
* protected $b = '';
178+
* protected $a = '';
179+
* protected $not_compressed_name = '';
180+
* public function __construct($c, $b, $a)
181+
* {
182+
* $this->b = $c;
183+
* $this->a = $b;
184+
* $this->not_compressed_name = $a;
185+
* }
186+
* function b()
187+
* {
188+
* return $this->a;
189+
* }
190+
* function a()
191+
* {
192+
* return $this->b;
193+
* }
194+
* public function thisMethodNameNotCompressed()
195+
* {
196+
* return $this->not_compressed_name;
197+
* }
198+
* }
199+
* $a = new My('lONg', 'SuperLongUpper', 'NOT_compressed');
200+
* echo test1($a->a()); //Long ++
201+
* echo test1($a->b());//SUPERLONGUPPER ++
202+
* echo test1($a->thisMethodNameNotCompressed());//NOT_COMPRESSED ++
203+
*/
204+
205+
```
206+
207+
208+

0 commit comments

Comments
 (0)