| 
Stephan Schmidt  [2004-09-24 07:54 UTC]Hi, 
 1. You seem to have some indentation problems (are you using tabs?)
 
 2. Please remove all methods that you marked with @ignore
 
 3. Please change System_Serial_Win32COMconnection::newConnection() to System_Serial_Win32COMconnection::singleton()
 
 4. Please consider providing a PHP4 version. Except visibility you are not using any PHP5-specific features
 
 5. Please follow the coding standards:
 if (!$result) $this->_initialized = TRUE;
 should be
 if (!$result) {
 ....
 }
 
 Stephan
Ian Eure  [2004-09-24 08:28 UTC]Some additional issues: 
 1. Why do you have a System_Serial_Factory class, instead of a System_Serial class with a factory method?
 
 2. What is the point of the switch in System_Serial_Factory::NewConnection? You seem to drop-through to an if statement, so the switch appears to just be bloat.
 
 3. Why is there a function which only returns the PHP_OS constant? Why not use it directly?
 
 4. More CS stuff; FALSE should be changed to false.
 
 5. I think there may be path-related security implications to calling "mode" in System_Serial_Win32COMconnection::init() without a full path. Is "mode" a builtin function, or an external command? If it's external, it should have the full path added.
 
 6. Any reason why System_Command couldn't be used to execute these commands? I believe it handles the path-related issues I raised in point #5.
 
 7. I think the class names are misleading. COM connetions could work on 64-bit Windows, not just Win32. And many *NIX variants use /dev/(whatever) syntax for serial ports.
 
 8. I'm not convinced that seperate classes are necessary, in any case, since it's only initialization that's platform-specific. Why not have a single class with e.g. _unixInit() and _winInit()?
Martin Jansen  [2004-09-24 08:57 UTC]In addition to the other comments a bit more: 
 1) PEAR has the so called "one-class-per-file" convention, which means that multiple classes should end up in multiple files.
 
 2) Why don't you simply use
 
 return PHP_OS;
 
 in _determineOS()?
 
 3) I'd suggest to rename getLine() to readLine() and getArray() to readLines().
 
 4) I'm by no means an expert in serial communication, but shouldn't there be a way to change the value of $badCommandResponse in getArray()? (There may be systems that use a different protocol dialect.)
 
 5) I'm missing documentation for the package.  Are you going to write some?
 
 Generally this looks like a useful addition for PEAR.
Stig Bakken  [2004-09-25 00:07 UTC]Nice class, I'll try it out on my X.10 controller! 
 What about taking the device name as a parameter to singleton()? This would make it work for more than one device at a time.
 
 Many of the stty settings used in the unixInit() method are non-POSIX and will cause portability issues.  It is probably better to omit the non-POSIX settings by default, and include them on OSes where they are known to be implemented (check PHP_OS, php_uname() or posix_uname()).
Alan Knowles  [2004-09-25 00:37 UTC]Considering this is a PHP5 proposal and most of ext/dio is available on Windows in PHP, it would appear this is mostly redundant. |