Closed dzpt closed 7 years ago
Same issue same answer:
I do not have time nor will to deal with any third party product...
If you are able to provide and maintain a generic yakpro-po.cnf file for composer, wordpress, ... or whatever other third party product, I will be very happy to provide a link to your repository...
Can you explain to use t_keep
and t_skip
i've tried to put vendor / composer directory for avoid obfuscating but didn't work.
t_keep = ['./library/vendor']
If can't make it work with composer, i need to exclude it
Are they absolute or relative path?
$conf->t_keep = ['./library/vendor'];
is ok... (if you have php >=5.4 ... otherwise use array('') syntax ) but I think that you will also have to populate $conf->t_ignore_classes , $conf->t_ignore_methods, ... and so on...
@Tom29 relative paths are relative to the current working directory (the directory on which you are ) when you run yakpro-po... It works as I use it on my own big project I wrote the obfuscator for... the relating extract of my yakpro-po.cnf is the following:
$conf->source_directory = '.';
$conf->target_directory = '..';
$conf->t_keep = array('config.php','local','memo','3rdparty/ckeditor');
$conf->t_skip = array('00_RELEASE_00','mppksag');
and my current working directory is the projects root directory when i run the yakpro-po command
@pk-fr i just found the way to correct here. the path needed to be 'library/vendor' instead of using absolute path. if i ignored vendor folder, do i need to declare to ignore all classes, methodes, properties names ... of all classes inside the vendor path?
Because it's insane, there are numerous of them :(
@Tom29 you have to ignore all classes, methodes, properties names ... that you use within your project....
if you want to make a generic yakpro-po.cnf that will be usable to others, you will have to declare and maintain everything...
@pk-fr yeah, i know. i'm making a cnf files thinking about writing some script which can get all the classes, methods, properties inside one folder.
or simply disable naming obfustation for all of them. Because some properties inside that folder can match with many other classes of mine.
Hey, how's about t_ignore_pre_defined_classes
? If i put all the class name in vendor folder to it, will it work?
by default:
$conf->t_ignore_pre_defined_classes = 'all';
you do not need to change it unless you want to obfuscate method names that are defined in a pre-defined class that you do not use...
To use composer it is necessary not to change the namespace references, or to adapt each namespace consiquently.
I have a configuration for composer, but adapted to Laravel
good news... If you publish it on GitHub, I will provide a link to your repository.
I will release a basic version for composer and one for laravel in the course of next week. Let you know when it's online :-)
@Phil795 did this ever happen? ;)
@Phil795 did this ever happen? ;)
I'm afraid not. Switched to another payment solution in the same week.
But I still have the config for Composer in a project.
If the Composer configuration is sufficient for you, I can send it to you
That would be great, thanks!
Hello,
Any news about the composer config?
Thanks
Unfortunately, I can no longer find the configuration.
But I can show you how you can easily create it
With this function you can print out all used namespaces. Build the output so that an array with the absolute namespaces is created and copy them into the config at $conf->t_ignore_namespaces
.
public function getNamespaces()
{
$namespaces=array();
foreach(get_declared_classes() as $name) {
if(preg_match_all("@[^\\\]+(?=\\\)@iU", $name, $matches)) {
$matches = $matches[0];
$parent =&$namespaces;
while(count($matches)) {
$match = array_shift($matches);
if(!isset($parent[$match]) && count($matches))
$parent[$match] = array();
$parent =&$parent[$match];
}
}
}
print_r($namespaces);
}
Hope it helps you
Getting this error:
I believe it's relevant with this one: https://github.com/pk-fr/yakpro-po/issues/13