WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Utvärdering av Phalanger 3.0 (.NET Kompilator för PHP5 med inslag av PHP6) (https://www.wn.se/forum/showthread.php?t=1058375)

Conny Westh 2013-06-28 00:24

Utvärdering av Phalanger 3.0 (.NET Kompilator för PHP5 med inslag av PHP6)
 
(Tråden är en fortsättning på diskussionen i tråden: http://www.wn.se/t1058306-15-2.html)

Jag flyttar diskussionen om Phalanger till en ny tråd för den blir lite OT i ursprungstråden. Det kan vara nyttigt att fokusera på utvärderingen utan att diskutera övriga frågor i tråden.

Conny Westh 2013-06-28 00:43

Verktyget Phalanger hittar du här: (http://phalanger.codeplex.com/).

Phalaner är med andra ord en kompilator som skapar EXE- eller DLL-filer, eller webbsidor för IIS för Microsoft .NET-miljön, av programkod som skrivits enligt PHP5- eller PHP6-syntax. Det finns vissa diskrepenseer p g a att verktyget är ganska nytt och inte testat fullt ut.

Jag har börjat testa verktyget för att se om jag kan hitta en användning för verktyget, primärt i mitt yrke som systemutvecklare.

Jag planerar att dela med mig av mina erfarenheter här i tråden. Jag uppskattar om andra finner nöje i att testa verktyget och dela med sig av sina erfarenheter här i tråden.

Jag har som mål att testa såna egenskaper som jag anser vara viktiga vid utveckling:

- Objekttänkandet (Den objektorienterade eller objektbaserade paradigmen)
- Kompilering
- Typning
- Komponenttänkande (dvs ej källkodsbaserade komponenter)
- Integration i Microsoft Visual Studio
- Kommandoradsinterface (CLI)
- Interoperabilitet med .NET-miljön
- Hur man skapar återanvändbara komponenter för PHP5- (& senare PHP6-syntax)
- Hur man skapar återanvändbara komponenter för .NET
- Hur man använder återanvändbara komponenter i PHP5- (& senare PHP6-syntax)
- Hur man använder återanvändbara komponenter i .NET

Eftersom jag inte är särskilt erfaren PHP utvecklare kommer jag inte att fokusera på egenskaper som (det får andra göra):

- Bakåtkompatibilitet med äldre PHP-syntax
- Överensstämmelse med loose typing-paradigmen
- Scriptspråks-tänket

Clarence 2013-06-28 08:53

Inslag av PHP6. Intressant.Snabb titt på deras wiki ser man att de inte ens stödjer PHP5.5. Sen undrar jag då vad som stöds från den väldigt ospikade listan på https://wiki.php.net/todo/php60 Eller du kanske hade något helt annat i åtanke? För inslag från något som inte ens finns låter lite konstigt.

Att native PHP extensions gör att man får köra allt i 32-bitar. Det skulle jag kalla produktionsodugligt för nya projekt.

Intressant att du även har omdefinierat "komponenttänkande" till att bara täcka upp stängda miljöer. Jag förstår verkligen inte varför en komponent som kan buggfixas och felsökas är mindre av en komponent, men allt för sitt syfte?

Jag är faktiskt rätt intresserad om du faktiskt finner något vettigt syfte alls för hela lösningen. Vill man köra en PHP applikation i en MS-miljö är ju PHP så öppet att du enkelt kör PHP under IIS. Därutöver verkar det mest som ett sätt att förstöra och begränsa ekosystemet och utvecklingsprocessen. Men om man som .NET utvecklare aldrig vill gilla PHP så kanske det är en bra egenskap? Men då förstår jag inte varför man inte håller sig borta helt ...

Och ta nu inte detta som ett tal för PHP (som jag jobbar med nästan varje dag) eller mot .net (som jag satt med senast igår kväll). Det är endast menat emot Phalanger som jag inte ser den minsta lilla poäng att faktiskt lära sig.

digiArt 2013-06-28 10:56

Jag har inte sett diskussionen i länkad tråd, inte heller sett, provat eller hört talas om Phalanger tidigare.

Däremot kan jag sett ett användningsområde: om man vill med PHP skapa .NET-baserade program som kan köras utan webbserver. (win8 appar eller liknande)

Fast varför inte lära sig .NET i så fall?

I övrigt håller jag med Clarence.

lubic 2013-06-28 11:07

Ser inte heller någon större vits med att "göra om" PHP-skript till .exe eller .dll-filer? Är det inte bättre att i så fall välja ett annat programmeringsspråk där detta är en mer naturlig del av sättet att utveckla för det specifika språket?

Conny Westh 2013-06-28 18:59

Nu har jag testat att skapa ett C# Class Library med en enkel class 'Hello' och en metod Say() som skriver ut en parameter på consolen.

Förutsättningen är jag har Visual studio 2010 och Phalanger 3.0 installerat.

Jag började med att skapa ett projekt för C# Class Library, koden blev så här:

Kod:

// File: CSHello.cs
using System;

namespace CSharpClassLibrary
{
        public class CSHello
        {
                int counter;
                public CSHello()
                {
                        counter = 0;
                }
                public string Say(string tell)
                {
                        this.counter++;
                        string tello = String.Format("CSharpClassLibrary.CSHello.Say(): [{1}]->[{0}]", tell, counter);
                        Console.WriteLine("{0}", tello);
                        return tello;
                }
        }
}

Sen la jag till ett Phalanger Console application i samma solution i Visual Studio med följande PHP-kod:

Kod:

<?php
// File: PhpHelloApp.php

use CSharpClassLibrary as CSharpClassLibrary;

class PhpHelloApp
{
        static function Main()
        {
                echo "Hello!\n";
                        $hello = new CSharpClassLibrary\CSHello();
                        $hello->Say("This is sent from Phalanger PHP-console-code!");
                echo "Press any key to exit...";
                fgets(STDIN);
                echo "Done.\n";

                return 0;
        }
}

?>

Därefter så la jag till en Project-referens till CSClassLibrary.

Tryckte på F5 för att testköra och så fick jag följande out put på consolen:

Kod:

Hello!
CSharpClassLibrary.CSHello.Say(): [1]->[This is sent from Phalanger PHP-console-code!]
Press any key to exit...

Det funkade med andra ord som jag förväntade mig.

Fördelen är att den som nu föredrar att arbeta med syntaxen i PHP men vill komma åt funktionalitet i .NET Framework eller länka in komponenter skrivna i .NET, nu kan göra det. Man kan med andra ord använda färdigtestade komponenter från .NET men skriva syntaxen i PHP om man gillar det.

tartareandesire 2013-06-29 00:29

Citat:

Ursprungligen postat av ConnyWesth (Inlägg 20472886)
Fördelen är att den som nu föredrar att arbeta med syntaxen i PHP men vill komma åt funktionalitet i .NET Framework eller länka in komponenter skrivna i .NET, nu kan göra det. Man kan med andra ord använda färdigtestade komponenter från .NET men skriva syntaxen i PHP om man gillar det.

Hur ofta vill man göra det? Jag har aldrig någonsin känt det behovet :) Det känns lite som att du desperat letar efter en väg att få PHP att fungera som .NET. Varför vill du då ens använda PHP?

Clarence 2013-06-30 21:26

Citat:

Ursprungligen postat av ConnyWesth (Inlägg 20472886)
Fördelen är att den som nu föredrar att arbeta med syntaxen i PHP men vill komma åt funktionalitet i .NET Framework eller länka in komponenter skrivna i .NET, nu kan göra det. Man kan med andra ord använda färdigtestade komponenter från .NET men skriva syntaxen i PHP om man gillar det.

"Färdigtestade" komponenter från .NET. Är du fortfarande övertygad om att bara komponenter med stängd källkod (och för det mesta utan öppna eller verifierbara enhetstester) som påstås vara färdiga är riktiga komponenter? Isåfall har du ju hittat ett användningsområde där. Men det bygger på en omdefinition av komponenter som iallafall inte jag tycker är vidare sund.

Nej, jag tror nog digiart var den enda som lyckades hitta en fördel här. Men också den är ju verkligen ett extremt edge case. Om man har en färdigskriven PHP app med lite UI logik och vill använda den för en metro app och råkar ha använt tillräckligt stor del kod som stöds av Phalanger så kan man kanske snabbare få ut sin metro app.

Conny Westh 2013-07-01 04:09

Citat:

Ursprungligen postat av Clarence (Inlägg 20472980)
"Färdigtestade" komponenter från .NET. Är du fortfarande övertygad om att bara komponenter med stängd källkod (och för det mesta utan öppna eller verifierbara enhetstester) som påstås vara färdiga är riktiga komponenter? Isåfall har du ju hittat ett användningsområde där. Men det bygger på en omdefinition av komponenter som iallafall inte jag tycker är vidare sund.

Nej, jag tror nog digiart var den enda som lyckades hitta en fördel här. Men också den är ju verkligen ett extremt edge case. Om man har en färdigskriven PHP app med lite UI logik och vill använda den för en metro app och råkar ha använt tillräckligt stor del kod som stöds av Phalanger så kan man kanske snabbare få ut sin metro app.

Med "färdigtestade komponenter" menar jag komponenter som man själv har utvecklat och "paketerat" till "färdigtestade komponenter". Exempel på såna kan vara DLL-filer men finns även andra varianter, men absolut vanligast är DLLer i Windows världen.

Källkod som du kopierar från ett projekt till ett annat är inte att betrakta som "återanvändning" av färdigtestade komponenter, eftersom du då öppnar upp risken att någon (du själv inräknat) går in och gör ändringar i en källkodsfil men inte i de andra 150....

Källkoden är fortfarande hur öppen man vill att den ska vara, "open source" har inget motsatsförhållande till begreppet "färdigtestade komponenter".

Jag såg även att det faktiskt finns stöd från PHP version 4.1 eller om det var 4.3 för klasserna COM, respektive DOTNET som gör att man kan instanciera Windows COM respektive DOTNET-DLLer.

När jag testade i PHP 5.5.0 nu så fick jag det dock inte att fungera, men det kan ju bero på att jag inte ställt in PHP.INI på rätt sätt, jag håller på att undersöka.

Men jag tycker Phalanger verkar lovande i alla fall.

Nu har jag installerat och kört lite objektorienterad Python (dock okompilerat) i Visual Studio så jag har inte testat hur COM och DOTNET-klasserna funkar i PHP.

Python verkar väldigt känsligt för kolumnpositioner på källkodsraderna, det är som att gå tillbaks till Cobol, som också var extremt känsligt för källkodens kolumnpositioner.

tartareandesire 2013-07-01 05:15

Med open source finns alltid "risken" att någon ändrar i din färdigtestade kod... Det är ju en av de stora fördelarna. Du måste nog allt bli lite mer flexibel och öppen om du någonsin ska kunna ta till dig PHP.


Alla tider är GMT +2. Klockan är nu 01:26.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson