Kom ihåg mig?
Home Menu

Menu


Utvärdering av Phalanger 3.0 (.NET Kompilator för PHP5 med inslag av PHP6)

 
Ämnesverktyg Visningsalternativ
Oläst 2013-06-28, 00:24 #1
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Standard 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 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-28, 00:43 #2
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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

Senast redigerad av Conny Westh den 2013-06-28 klockan 00:49
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-28, 08:53 #3
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-28, 10:56 #4
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
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.
digiArt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-28, 11:07 #5
lubic lubic är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 205
lubic lubic är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 205
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?
lubic är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-28, 18:59 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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.

Senast redigerad av Conny Westh den 2013-06-28 klockan 19:03
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-29, 00:29 #7
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
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?
__________________
Full-stack developer, free for smaller assignments

Senast redigerad av tartareandesire den 2013-06-29 klockan 22:49
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-30, 21:26 #8
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
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.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-07-01, 04:09 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av Clarence Visa inlägg
"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.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-07-01, 05:15 #10
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:28.

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