Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 11:15

    jakubmisek on master

    date_create_immutable_from_form… (compare)

  • 10:05
    jakubmisek edited #577
  • 10:01
    jakubmisek commented #569
  • 00:11
    jan-ai opened #577
  • Nov 12 23:56
    jan-ai commented #569
  • Nov 12 18:16
    howardyo starred peachpiecompiler/peachpie
  • Nov 12 15:58
    adamdriscoll starred peachpiecompiler/peachpie
  • Nov 12 14:08

    jakubmisek on master

    emitting less overloads when un… (compare)

  • Nov 12 12:05
  • Nov 11 23:02
    sergiocabral starred peachpiecompiler/peachpie
  • Nov 11 22:22

    jakubmisek on v0.9.600

    (compare)

  • Nov 11 21:17

    jakubmisek on master

    updated pcre to 1.1.0 (compare)

  • Nov 10 19:18
    InquisitiveQuail starred peachpiecompiler/peachpie
  • Nov 10 13:39

    jakubmisek on master

    pcre notes (compare)

  • Nov 09 15:47

    jakubmisek on master

    diagnostic of $this in non-stat… (compare)

  • Nov 09 15:36

    jakubmisek on master

    diagnostic of $this when use ou… (compare)

  • Nov 08 16:09

    jakubmisek on master

    diagnostic for invalid constant… (compare)

  • Nov 08 13:01
    jakubmisek closed #576
  • Nov 08 13:01
    jakubmisek commented #576
  • Nov 08 13:01

    jakubmisek on master

    test for dynamic invocation wit… (compare)

smx
@smx-smx
i was already working on an msbuild target that fixes the signature on the fly after build :P
yes they are unsigned
ImageSharp is unsigned, so it tries to load dlls that have a null PublicKeyToken
and .NET Framework doesn't allow that if the loading image is signed
so i had to sign ImageSharp and re-sign PeachPie.Library.Graphics in a single run
so that PeachPie.Library.Graphics gets patched to lookup a signed variant of ImageSharp
smx
@smx-smx
Patching the images one at a time didn't work because references weren't properly updated
smx
@smx-smx
made a workaround script
smx
@smx-smx
<?php
$toFix = array(
    "Peachpie.Library.Graphics.dll",
    "SixLabors.Core.dll",
    "SixLabors.ImageSharp.dll"
);

$fixer = "C:\Program Files\BrutalDev\.NET Assembly Strong-Name Signer\StrongNameSigner.Console.exe";

mkdir("tmp");

foreach($toFix as $item){
    copy($item, "tmp/{$item}");
}

$keyFile = escapeshellarg($argv[1]);
system("\"{$fixer}\" -in tmp -k {$keyFile}", $code);
if($code != 0)
    return $code;

foreach($toFix as $item){
    unlink($item);
    copy("tmp/{$item}", $item);
}

shell_exec("rd /s /q tmp");
invoke this from msbuild
  <Target Name="FixSignature" DependsOnTargets="Build" AfterTargets="Build">
    <Exec Command="php &quot;$(ProjectDir)fixer.php&quot; $(ProjectDir)peachpie.snk" WorkingDirectory="$(OutDir)" />
  </Target>
  <ItemGroup>
    <None Remove="fixer.php" />
  </ItemGroup>
hmm forgot that i made a copy of the snk in the outputdir
it should probably be passed as first arg
but w/e, just a temporary hax (P.S. updated the workaround script to do this)
smx
@smx-smx
question: is it possible to get syntax completion in referenced .NET projects? (in PHP land i mean)
at least for methods and types
smx
@smx-smx
also another question: how to do typeof in PHP (i need to get the type of a C# class)
smx
@smx-smx
worked around it with Type::GetType(string)
where string can be Type,ContainingAssembly
L!εsAμεr
@liesauer
i don't recommend write too many c# stuff
L!εsAμεr
@liesauer
u can write a c# util library and interop with it in php
Jakub Míšek
@jakubmisek
@smx-smx there is a NuGet package that does the post-compile signing I think
@smx-smx the code completion would have to be implemented in our VSCode extension (https://marketplace.visualstudio.com/items?itemName=iolevel.peachpie-vscode), and yes it is possible
@smx-smx basically there is no syntax for typeof in PHP. \System\Type::GetType() is the best you can have. In order to make it in compile-time, we would have to introduce our own typeof() function that would be well-known to the compiler, or we can have an extension to PHP's ReflectionClass
Jakub Míšek
@jakubmisek
but FYI :) you can specify CLR attributes in PHP and you can use typeof as the attribute parameter value https://docs.peachpie.io/net/attributes/
Calvin Baart
@calvinbaart
@jakubmisek Finally have some time to go through the issues, I noticed that I'm now getting a compile error though: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127831082 any hints? Its not really clear whats going wrong here (except for a null-pointer exception)
Calvin Baart
@calvinbaart
I get the same error when compiling Laravel 6.0.3 locally
Jakub Míšek
@jakubmisek
Thanks, nullref exception will be fixed!
Jakub Míšek
@jakubmisek
@calvinbaart nullref is probably fixed, if it's not it would help to see line numbers in the exceptions :)
Calvin Baart
@calvinbaart
Just triggered a new build: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127975520 Currently at work so can't really debug, how would I enable line numbers for the exceptions?
(I guess using the debug build for the compiler would do that...)
Jakub Míšek
@jakubmisek
thanks, yes the debug build
Calvin Baart
@calvinbaart
Got past the compile stage now (into a crash at runtime, I'll look into that at home)
Jakub Míšek
@jakubmisek
thanks, I see. It's a new one as well right?
Calvin Baart
@calvinbaart
Yea, I removed a few patches though so its probably related to that (Carbon had a patch related to getLastErrors and setLastErrors, so its probably that)
Jakub Míšek
@jakubmisek
maybe, but this one is about expecting an array as argument but getting something else when calling a method inside __construct
thanks, Creator2 seems to be that
Calvin Baart
@calvinbaart
getLastErrors in peachpie has the [return: CastToFalse] attribute, but according to the documentation getLastErrors should always return an array. Maybe thats the problem
Jakub Míšek
@jakubmisek
just found it! you're right. I'll double check but I think even PHP returns FALSE if none of date functions were called yet
Calvin Baart
@calvinbaart
With #535 closed can we now require non-compiled .php files?
Jakub Míšek
@jakubmisek

@calvinbaart we've changed the getLastError() implementation so it never returns FALSE. Note in PHP it does return FALSE sometimes but it is not documented and I think developers (and frameworks) do not expect it anyway.

The only scenario where it can be used would be if someone would like to check if any of date-parsing function were used already by checking getLastError() is FALSE.

Calvin Baart
@calvinbaart
Great! Just triggered a new build to see if this resolves the issue: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127997383
Jakub Míšek
@jakubmisek
thanks!
@calvinbaart the #535 only adds necessary API so w can get it implemented in future, but the whole eval() think is not ready for it yet. Note compiler needs the whole context, all the classes and dependencies. It cannot just compile a piece of it, or at least not efficiently.
We will use it for implementing FIleProviders in ASP.NET Core, so we can pack all the content files (.js, .css,...) into a .NET resource and serve it from there, and PHP's file functions will treat it like it is saved physically on disk.
Calvin Baart
@calvinbaart
That sounds interesting, Would be pretty useful for Laravel :)
Jakub Míšek
@jakubmisek
yes, basically the entire PHP component/web (like the entire wordpress) can be distributed and published as a single DLL file (approx 20MB large)
@calvinbaart we have changed the project's version from 0.9.9 to 1.0.0 (-dev)!