• Sign in to Neowin Faster!

    Create an account on Neowin to contribute and support the site.

  • 0
Sign in to follow this  

Dreamweaver lying about a syntax error

Question

-Alex-    101

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 :)

Share this post


Link to post
Share on other sites

19 answers to this question

Recommended Posts

  • 0
neoraptor    49

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.

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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! :)

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

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

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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.

Share this post


Link to post
Share on other sites
  • 0
Lingwo    490

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.

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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".

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

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?

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

Nope, 5.3.8

Share this post


Link to post
Share on other sites
  • 0
giantpotato    296

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.

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

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.

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

@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 :(

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

You could try a namespace or trait declaration to test the syntax checking.

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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!

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

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

Try this though...


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

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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;

Share this post


Link to post
Share on other sites
  • 0
AnthonySterling    11

Bugger, time to report a bug and/or feature request then?

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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.!

Share this post


Link to post
Share on other sites
  • 0
giantpotato    296

out of curiosity can you try if

true ?: false

or

(1==2) ?: true 

gives a syntax error

Share this post


Link to post
Share on other sites
  • 0
-Alex-    101

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.