• 0

Dreamweaver lying about a syntax error


Question

Hi all,

I just wondered if someone knows how to disable a specific syntax error from appearing in Dreamweaver CS5.5, or otherwise how to 'upgrade' Dreamweaver's PHP syntax checker. My problem is:

http://php.net/manua....comparison.php

The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE.

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

post-176093-0-08206400-1325605014_thumb.

Running Help > Update shows that DW is up-to-date.

Thanks for any help :)

Link to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 0

can't you just cast to Boolean (i'm not a php dev but should be possible).

Also this seems stupid to me (something == 3) ? true : false, this (something == 5) should already return true or false.

Link to comment
Share on other sites

  • 0

Not too sure what you mean when you say 'cast to boolean', but thanks for the 2nd tip. Changed lines 16 & 17:

$admin = ($_SESSION['status'] == 3 ? true : false);
$loggedin = (count($_SESSION) ? true : false);

$admin = ($_SESSION['status'] == 3);
$loggedin = (count($_SESSION));

Never thought of doing that before, so cheers! :)

Link to comment
Share on other sites

  • 0

You're using PHP 5.3 specific code, does Dreamweaver (or your version of) support this?

Evidently not, hence why I need to upgrade it to :p

Edit: Sorry, I should've said which version of Dreamweaver I'm using in the OP, but it's CS5.5. Edited to reflect.

Link to comment
Share on other sites

  • 0

I think you'll have to use the dynamic code hinting feature in dreamweaver to get it to attempt to support 5.3 but to be honest when i started with PHP i soon wrote off Dreamweaver as an IDE and php support is very limited. I personally use Netbeans now, it is free and has much better support for PHP and has a tonne of features.

Link to comment
Share on other sites

  • 0

To be honest with you, I used to whole-heartedly agree about DW being a horrible IDE for writing PHP, but it seems to have come a long way since the Adobe buyout, and I'm actually very impressed with CS5.5

Code hinting however is not the solution... all code hinting is, is this:

post-176093-0-04326700-1325607224.png

Edit: Actually it looks like CS5.5 adds support for PHP 5.3 for code hinting at least, so I don't know why not for syntax checking: click. Putting expr2 in the middle of the ternary makes the syntax error go away, but I don't wanna have to write "old-code".

Link to comment
Share on other sites

  • 0

I can't speak for DW, but some IDE's delegate syntax highlighting to a locally installed version of the language, do you per chance have PHP 5.2 installed?

Link to comment
Share on other sites

  • 0

I'm no expert on PHP, but to me it looks like it's dreamweaver is complaining error because you don't have a boolean as expr1.

($_SESSION["uid"] = 'value')?:false

should be error free.

Link to comment
Share on other sites

  • 0

Can you try another 5.3 specific feature to see if that results in a syntax error? If not, I'd say that that the short ternary isn't yet supported in DW given the evidence.

Link to comment
Share on other sites

  • 0

@giantpotato, I see what you're trying to say, but the boolean is expr1, thus my code of:

$uid = ($_SESSION['uid'] ?: false);

is correct.

@Anthony, I just took a look at the new features of PHP 5.3, and tried out Nowdoc - it validates syntactically correct:

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

Seems like it's a DW bug :(

Link to comment
Share on other sites

  • 0

Just noticed jump label support was added into PHP 5.3 ( :|), and that also validates correctly:

goto a;

Also just tried a namespace, and that validates correctly too:

namespace foo;
  class Cat { 
    static function says() {echo 'meoow';}  }

So I guess it must be a bug!

Link to comment
Share on other sites

  • 0

Well then, I'd say the short ternary isn't implemented in DW 5.5.

Try this though...


<?php
$var = $_SESSION['foo'] ?: false;
[/CODE]

Link to comment
Share on other sites

  • 0

Exactly the same results, i.e:

Valid:

$uid = ($_SESSION['uid'] ? true : false);

Invalid:

$uid = ($_SESSION['uid'] ?: false);

Valid:

$uid = $_SESSION['uid'] ? true : false;

Invalid:

$uid = $_SESSION['uid'] ?: false;

Link to comment
Share on other sites

  • 0

Yup, gonna go report it to the Adobe Bugbase. That said, I reported a bug in Adobe AIR to the Bugbase on 14th November. On 17th November it was acknowledged as a bug, yet it's still sat there doing sweet F.A.!

Link to comment
Share on other sites

  • 0

Both come back as invalid... with and without trailing semicolon.

Also, seems like Bugbase is only for AIR & Flash bugs, so reporting here instead.

Edit: Reported! Guess there's nothing more I can do, so I'll just have to put up with a ton of red markers all over my code :p

Link to comment
Share on other sites

This topic is now closed to further replies.