http://www.macupdate.com/info.php/id/8636
Seems to have PHP compilation inside the app.
You can extend almost any of the editors using scripting (however you may not find it as mac-like as you might want.)
e.g. This script will check the syntax of the front SubEthaEdit document.
[php]
-- PHP Parsing Routine
on parseMyPHP(sourcePath)
try
set compileResult to (do shell script "/usr/bin/php -l " & sourcePath)
on error someError
set compileResult to someError
end try
return compileResult
end parseMyPHP
on checkMyPHPSyntax(sourcePath)
set syntaxResult to my parseMyPHP(sourcePath)
if syntaxResult starts with "No syntax errors" then
return ""
end if
return syntaxResult
end checkMyPHPSyntax
tell application "SubEthaEdit"
if (number of windows) < 1 then
«event panSdlog» "There are no open subEthaEdit windows." given buttons:{"OK"}, «class givu»:1 -- seconds
return -- can't compile nothing!
else
set frontDoc to document of front window
if modified of frontDoc is true then
set saveReply to «event panSdlog» "There are Unsaved Changes! Do you want to Save the source? (choosing 'No' will cancel compilation.)" given buttons:{"No", "Yes"}, «class dflt»:2
if button returned of saveReply is "No" then
return
else
save frontDoc
end if
end if
try
set theSourcePath to path of frontDoc
-- display dialog "path: " & theSourcePath
on error errorString number errorNumber
«event panSdlog» "This Document has never been saved to a file- It cannot be Compiled."
return
end try
end if
end tell
set compileResult to checkMyPHPSyntax(theSourcePath)
if compileResult is equal to "" then
say "PHP Syntax Correct." -- You can comment out either of these lines.
-- display dialog "No Errors - Your source is now compiled." buttons "OK" default button 1 giving up after 10 -- You can comment out either of these lines.
else
tell application "TextEdit"
activate
set resultsDoc to make new document at front
set the name of window 1 to "PHP Syntax Check results:"
set the text of resultsDoc to compileResult -- Spit out the compilation error
end tell
end if
[/php]
The best solution would probably be xcode - you can customise that hugely and there will definitely be people who have done the same thing and published their notes.